注意而來的一段代碼:
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
}
謝謝,作品精細!我只是堅持你的解決方案,而不必重構方法:-) – 2012-03-15 18:27:57