2016-11-25 13 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>

イムは、コードと説明に基づいて、そのツリービューは次のようになります。 enter image description here

しかし、今私ツリービュー内の選択されたノードに基づいてxmlにノードを追加することができます。

私は、選択されたTreenodeに基づいてxmlNodeを取得することができますか(これは一意でない属性に基づいています)。

これを達成するためのベストプラクティスは何ですか?

答えて

0

選択したツリーノードのプロパティ「フルパス」を使用することができます

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); 
     } 
    } 
関連する問題