xml文件的递归函数(层次结构数据)
时间:2020-03-05 18:48:34 来源:igfitidea点击:
我有以下格式的XML文件:
<categories> <category id="1"></category> <category id="2"> <category id="3"></category> <category id="4"> <category id="5"></category> </category> </category> </categories>
谁能给我一些指导,说明如何使用C#遍历文件?
解决方案
回答
首先,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中内置了许多更好的节点遍历方法时使用了递归,则可能是时候重新考虑策略了。