我正在研究一个系统,我有一个必须包含项目结构的树视图 来自物体。 这个结构看起来像这样:
Project
|- Module1
| |- Xml1
| | |- Element
| | |- Element
| | | |- Element
| | | |- Element
| | | | |- Element
| | | |
| | | |- Element
| | |
| | |- Element
| |
| |- Xml2
| |- Element
|
|- Module2
|- Xml1
|- Element
等。
现在,当我想将一个Xml文件添加到模块时,它很容易,因为我知道它有 它上面有2个节点。 (项目,模块) 在c#:
public void AddXmlToTree(string xmlFile)
{
projectTreeView.Nodes[0].LastNode.Nodes.Add(xmlFile);
}
注意:我正在使用LastNode,因为我按照树的顺序添加它们。
现在问题: 每个元素都可以有另一个元素,所以它基本上是无限的。 我不能只制作一百万个这样的方法。 我需要一些其他东西,这可能是一些递归方法。
我想我需要获取最后添加的Element对象的Node 我可以添加下一个元素节点,我只是不知道如何得到它。
我希望你能理解我的问题。
答案 0 :(得分:0)
根本没有测试,但可以用作方向:
private void AddNodesRecursive(TreeNode parent, object childData)
{
string strChildNode = string.Empty;
XmlElement childDoc = null;
if (parent != null)
{
if ((childData as string) != null)
{
parent.ChildNodes.Add(new TreeNode((childData as string)));
return;
}
childDoc = childData as XmlElement;
if (childDoc != null)
{
TreeNode subParent = new TreeNode(childDoc.InnerText);
parent.ChildNodes.Add(subParent);
foreach (XmlElement grandChild in childDoc.ChildNodes)
AddNodesRecursive(subParent, grandChild);
}
}
}