2008-09-05 7 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을 사용하는 훌륭한 방법을 제공합니다.

XMLDocument에 XML을로드했다고 가정하면 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의에 내장 많은 ​​더 나은 노드 탐색 방법이있을 때 당신이 당신의 전략을 재고 아마도 그 시간을 재귀를 사용하는 경우.