1

次の形式の XML ファイルがあります。

<categories>
  <category id="1"></category>
  <category id="2">
    <category id="3"></category>
    <category id="4">
      <category id="5"></category>
    </category>
  </category>
</categories>

C#を使用してファイルをトラバースする方法について誰か教えてください。

4

1 に答える 1

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 に組み込まれているより優れたノード トラバーサルの方法が非常に多くあるときに再帰を使用している場合は、おそらく戦略を再考するときです。

于 2008-09-05T23:37:28.897 に答える