2012-03-13 38 views
2

在Visual Studio 2010中使用Visual C#我按照以下示例將XML文檔的節點添加到樹視圖。在C#中不使用XML文檔中的值填充樹視圖

http://support.microsoft.com/kb/317597/en-us

到目前爲止,這工作得很好。然而,#7中給定的一段代碼顯示包括值的所有節點,例如,當達到<myNode>2</myNode>時,還顯示值2

如何更改示例,以便只有不包含其值的所有節點名稱纔會填充到樹形視圖中?

回答

2

注意而來的一段代碼:

if (inXmlNode.HasChildNodes) 
{ 
    // child nodes 
    for (...) 
    { 
     xNode = inXmlNode.ChildNodes[i]; 
     inTreeNode.Nodes.Add(new TreeNode(xNode.Name)); // here the leafs are created 
     tNode = inTreeNode.Nodes[i]; 
     AddNode(xNode, tNode); 
    } 
} 
else 
{ 
    // it's a leaf 
    inTreeNode.Text = ... // here it is set 
} 

對於您的要求,你應該重組整個遞歸方法,但一個簡單的解決方法是把該HasChildNodes起來:

if (inXmlNode.HasChildNodes) 
{ 
    // child nodes 
    for (...) 
    { 
     xNode = inXmlNode.ChildNodes[i]; 

     if (! xNode.HasChildNodes) // a leaf? 
      continue; // then skip 

     inTreeNode.Nodes.Add(new TreeNode(xNode.Name)); // here the leafs are created 
     tNode = inTreeNode.Nodes[i]; 
     AddNode(xNode, tNode); 
    } 
} 
else 
{ 
    // it's a leaf, should only happen for the root now 
    inTreeNode.Text = ... // here it is set 
}  
+0

謝謝,作品精細!我只是堅持你的解決方案,而不必重構方法:-) – 2012-03-15 18:27:57