【问题标题】:Recursive function for an xml file (hierarchial data)xml文件的递归函数(分层数据)
【发布时间】: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 完成。

标签: xml recursion


【解决方案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 内置了许多更好的节点遍历方式时使用递归,那么也许是时候重新考虑您的策略了。

【讨论】:

    猜你喜欢
    • 2012-05-31
    • 2012-10-19
    • 2014-10-27
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 2018-06-06
    • 2011-09-22
    • 1970-01-01
    相关资源
    最近更新 更多