2016-11-25 89 views
0

在我當前的項目(winform)中,我使用xml提供樹狀視圖。 XML是建立這樣的例子:根據樹狀視圖中的選擇查找xml節點

<Root> 
 
    <ns code="NS" description=" - New"> 
 
    <someName code="5M" description=" - some 5M"> 
 
     <entry1 code="TN" description=" - some description 1" /> 
 
     <entry2 code="TO" description=" - some description 2" /> 
 
    </someName> 
 
\t <someOtherName code="6M" description=" - some 6M"> 
 
\t \t <entry1 code="TN" description=" - some description 1" /> 
 
\t \t <entry2 code="TO" description=" - some description 2" /> 
 
\t </someOtherName> 
 
    </ns> 
 
</Root>

進出口填充我的TreeView基於代碼和說明,因此樹形視圖看起來是這樣的: enter image description here

但現在我魔杖可以根據樹視圖中選定的節點將節點添加到xml中。

現在我想知道,是否有可能獲得基於所選Treenode(基於非唯一屬性)的xmlNode。

完成此操作的最佳實踐是什麼?

回答

0

您可以使用所選樹節點的屬性 「FULLPATH」:

private void trvAcsConfig_AfterSelect(object sender, TreeViewEventArgs e) 
    { 
     try 
     { 
      //get selected tree node 
      TreeNode selectedTreeNOde = ((TreeView)sender).SelectedNode; 

      string fullPath = "/" + selectedTreeNOde.FullPath.Replace("\\", "/"); 

      //selected tree node is an attribute, comment,... 
      if (selectedTreeNOde.Nodes.Count == 0) 
       fullPath = fullPath.Substring(0, fullPath.LastIndexOf('/')); 


      XmlNodeList nodes = AcsConfig.ConfigXmlDocument.SelectNodes(fullPath); 

      Console.WriteLine(selectedTreeNOde.Name); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 
    }