2011-03-11 6 views
4

나는 간단한 xml 문서를 가지고 있으며 특정 노드의 수를 얻고 싶다. 어떻게해야합니까? 지금은 노드를 가져 오기 위해 다음 구문을 사용하고 있습니다.XPathDocument 및 C#을 사용하여 노드 수를 얻는 방법은 무엇입니까?

// send request and strore in xpath doc (read-only) 
    XPathDocument xDoc = new XPathDocument(requestURL); 

    // Create navigator 
    XPathNavigator navigator = xDoc.CreateNavigator(); 

    XPathNavigator navError = navigator.SelectSingleNode("/api/error"); 
+0

(3)과 같은 결과를 줄 것이다 XML에 Linq를 사용 하시겠습니까? –

답변

5

api/error의 인스턴스 수를 계산 하시겠습니까? 그렇다면 것은 시도 :

int errorCount = navigator.Select("/api/error").Count; 
2

당신이 사용할 수 있습니다

int count = navigator.Select("/api/error").Count; 
0

LINQ를 사용하여 당신이 (상관없이 계층 적 위치) 노드의 인스턴스의 수를 셀 수,

int nodeCount; 
using (StreamReader reader = new StreamReader(xmlFilePath)) 
{ 
    XElement rootElement = XElement.Load(reader); 
    nodeCount = rootElement.Descendants(nodeName).Count(); 
} 

예를 들어 주어진 xml에서 nodeCount은 4 (nodeName은 "b")이고

(210)
<a> 
    <b>1</b> 
    <b>2</b> 
    <b> 
     <c>3</c> 
    </b>  
    <d> 
     <b>4</b> 
    </d>  
</a> 

당신이 계층 구조를 유지하고 싶은 경우에,이 코드

string nodeXPath = "./b"; 
using (StreamReader reader = new StreamReader(xmlFilePath)) 
{ 
    XElement rootElement = XElement.Load(reader); 
    nodeCount = rootElement.XPathSelectElements(nodeXPath).Count(); 
} 

같은 예를 들어 결과를 사용, 지금 당신은 당신이 원하는 해달라고 확실

관련 문제