我按照以下示例在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
}