2008-09-05 10 views
1

ich eine XML-Datei in folgendem Format habe:rekursive Funktion für eine XML-Datei (hierarchische Daten)

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

Kann jemand bitte geben Sie mir eine Richtung auf, wie ich könnte die Datei mit C# durchqueren?

+0

Dies geschieht am natürlichsten mit XSLT. –

Antwort

2

Zunächst bietet System.XML einige hervorragende Möglichkeiten, mit XML zu arbeiten.

Ich gehe davon aus, dass Sie Ihre XML in ein XMLDocument geladen haben. Dadurch können Sie XPath Selectors verwenden oder einfach durch das DOM laufen.

Etwas Ähnliches würde von was auch immer Gehelement zurück bis an die Spitze Rekursion:

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

Mit Rekursion einen Knoten von ID finden etwas wie diese (Hinweis getan werden konnte, schrieb ich dies in der Textbox kann es falsch sein):

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;  
} 

wenn Sie jedoch Rekursion verwenden, wenn es so viele bessere Knoten Traversal Wege gebaut, um System.XML sind, dann vielleicht seine Zeit, um Ihre Strategie zu überdenken.