C# 在C中不使用XML文档中的值填充树视图#

C# 在C中不使用XML文档中的值填充树视图#,c#,xml,treeview,C#,Xml,Treeview,在VisualStudio2010中使用Visual C#,我按照以下示例将XML文档的节点添加到树视图中 到目前为止,这一切都很好。但是#7中的给定代码段显示所有节点,包括值,例如,当到达2时,也会显示值2 如何更改示例,以便只将所有节点名称(不包括其值)填充到树视图中?请注意下面的代码: if (inXmlNode.HasChildNodes) { // child nodes for (...) { xNode = inXmlNode.ChildN

在VisualStudio2010中使用Visual C#,我按照以下示例将XML文档的节点添加到树视图中

到目前为止,这一切都很好。但是#7中的给定代码段显示所有节点,包括值,例如,当到达
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
}     

谢谢,很好用!我只是坚持使用您的解决方案,而不重新构造方法:-)