2016-11-25 88 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); 
     } 
    }