我有一个XML文件,格式如下:
<categories>
<category id="1"></category>
<category id="2">
<category id="3"></category>
<category id="4">
<category id="5"></category>
</category>
</category>
</categories>
任何人都可以请教我如何使用C#遍历文件?
答案 0 :(得分:2)
首先,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中内置了许多更好的节点遍历方式时使用递归,那么可能是时候重新考虑您的策略了。