xml文件的递归函数(分层数据)
Posted
技术标签:
【中文标题】xml文件的递归函数(分层数据)【英文标题】:Recursive function for an xml file (hierarchial data) 【发布时间】:2010-09-08 00:04:00 【问题描述】:我有一个格式如下的 XML 文件:
<categories>
<category id="1"></category>
<category id="2">
<category id="3"></category>
<category id="4">
<category id="5"></category>
</category>
</category>
</categories>
谁能告诉我如何使用 C# 遍历文件?
【问题讨论】:
这很自然地使用 XSLT 完成。 【参考方案1】:首先,System.XML 提供了一些使用 XML 的出色方法。
我假设您将 XML 加载到 XMLDocument 中,这样做允许您使用 XPath 选择器,或者只是遍历 DOM。
这样的事情会使用递归从任何元素回到顶部:
public XmlNode WalkToTopNode (XmlNode CurrentNode)
if (CurrentNode.ParentNode == null)
return CurrentNode;
else
return WalkToTopNode(CurrentNode.ParentNode);
使用递归通过 ID 来查找节点可能有点像这样(注意,我在文本框中输入了这个,它可能是错误的):
public XmlNode GetElementById (string id, XmlNode node)
if (node.Attributes["id"] != null && node.Attributes["id"].InnerText == id)
return node;
else
foreach (XmlNode childNode in node.Children)
return GetElementById(id, childNode);
return null;
但是,如果您在 System.XML 内置了许多更好的节点遍历方式时使用递归,那么也许是时候重新考虑您的策略了。
【讨论】:
以上是关于xml文件的递归函数(分层数据)的主要内容,如果未能解决你的问题,请参考以下文章