2008-09-05 21 views
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#を使用してファイルを通過する可能性がある方法についていくつかの方向をお願いできますか?

+0

これは、XSLTを使用して最も自然に行われます。 –

答えて

2

まず、System.XMLはXMLを扱う優れた方法を提供します。

私はあなたのXMLをXMLDocumentにロードしたと仮定しています。そうすれば、XPathセレクタを使用することも、DOMを歩くこともできます。私はテキストボックスでこれを入力した、IDによってノードを見つけるために、再帰を使用し

public XmlNode WalkToTopNode (XmlNode CurrentNode) 
{ 
    if (CurrentNode.ParentNode == null) 
     return CurrentNode; 
    else 
     return WalkToTopNode(CurrentNode.ParentNode); 
} 

は、この(注のようにやや行うことができます。このような

何かが再帰使ってどんな要素からトップに戻るまで歩きます、それは)間違っている可能性があります

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に内蔵された非常に多くの、より良いノードトラバーサル方法があるとき、あなたはあなたの戦略を再考するために、おそらく、その時間を再帰を使用している場合。

関連する問題