將Xml檔案遞迴載入到TreeView中

Nincems發表於2018-12-11

 #region 【通過XDocument的方式將Xml檔案遞迴到TreeView控制元件中】

  //讀取Xml檔案(XDocument)

  //1.載入Xml檔案

  XDocument document=XDoument.Load("檔名稱.xml");

  //2.先獲取跟節點

  XElement rootElement=doucment.Root;

  //3.將Xml檔案載入到TreeView的根節點上

  TreeNode rootNode=treeView1.Nodes.Add(rootElement.Name.ToString());

  //通過呼叫LoadXmlElement() 方法遞迴載入

  LoadXmlTreeView(rootElement,rootNode.Nodes);

#endregion

//通過XDocument的方式將xml元素遞迴載入到TreeView上

private void LoadXmlTreeView(XElement rootElement,TreeNodeCollection treeNodeCollection)

{

  //獲取根元素rootElement 下的所有子元素

  //rootElement.Elements()

  //遍歷rootElement下的所有子元素(直接元素)

  foreach(XElement item in rootElement.Elements())

  {

    if(item.Elements().Count()==0)

    {

      treeNodeCollection.Add(item.Name.ToString()).Nodes.Add(item.Value);

    }else

    {

      //將當前元素載入到TreeView的節點集合中

      TreeNode node=treeNodeCollection.Add(item.Name.ToString());

      LoadXmlTreeView(item,node.Nodes);

    }

  }

}

#region 【通過XmlDocument的方式將Xml檔案遞迴到TreeView控制元件中】

  //1.載入xml檔案到XMLDocument物件

  XMLDocument xmldocument= new XmlDocument();

  //將xml載入到XMLDocument物件上

  xmldocument.Load("檔名稱.xml");

  //得到xml的根節點(根元素)

  XMLElement xmlElement= document.DocumentElement;

  //先把xml的跟元素載入到TreeView中

  TreeNode treenode= treeView1.Nodes.Add(xmlElement.Name);

  //實現遞迴方法將Xml檔案載入到TreeView中

  LoadToTreeXMLDocument(xmlElement,treenode.Nodes);

#endregion

private void LoadToTreeXMLDocument(XmlElement xmlElement , TreeNodeCollection treeNodeCollection)

{

  //喜歡xmlElent下所有子元素載入到treeNodeCollection集合中

  foreach(XmlNode item in xmlElement.ChilNode)

  {

    //在此之前要判斷一下當前節點是什麼型別的節點

    if(item.NodeType==XmlNodeType.Elment)

    {

      //如果當前節點是一個“元素”節點,則把當前節點載入到TreeView中

      TreeNode node = treeNodeCollection.Add(item.Name);

      //遞迴呼叫

      LoadToTreeViewXmlDocument((XmlElement)item,node.Nodes);

    }

    else if (item.NodeType==XmlNodeType.Text|item.NodeType==XmlNodeType.CDATA)

    {

      treeNodeCollection.Add(item.InnerText);

    }

  }

}

原文詳見:https://www.cnblogs.com/libo-2249/p/10073211.html

相關文章