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

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

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

10-07 21:41