2010-05-13 3 views
2

내가 다음과 같은 XML 파일을 말한다.상대 XPath를 선택있는 XmlNode를 사용 (C#을)

I 다음 루프 두 노드, 프로피온산, 글리콜 : 내가 node.SelectNodes("https://stackoverflow.com/a/b/c");를 호출 할 때

foreach (XmlNode node in nodes) { } 

그러나, 그것은 여전히 ​​값뿐 아니라 자손 모두를 반환합니다. 현재 node에서 오는 노드 만 선택할 수 있습니까? foreach 루프에서

답변

8

, 당신은 이미 node는 원본 문서의 /a/b 것을 알고 - 그래서 그냥 c 아이들이 단순히 상대 XPath를 사용하여 얻을 :

node.SelectNodes("c") 
2

당신은 node.SelectSingleNode("C");을 사용할 수 있습니다

1
/a/b[1]/c 

intance는 첫 번째 노드의 모든 노드의 노드리스트를 가져옵니다. b는 tagname을 가지고있다. c.

싱글 톤 노드리스트로 첫 번째 c를 얻으려면/a/b [1]/c [1]을 사용하십시오./a/b/c [1]은 여러 노드의 노드 목록을 다시 반환합니다.

SelectSingleNode는 오해의 소지가 있습니다. 내가 아는 한 XPath는 항상 하나의 노드 (또는 비어있을 수도 있음)를 선택적으로 포함 할 수있는 노드 목록을 반환합니다.

// c [1]은 문서에서 첫 번째 c를 선택하기 만합니다.

관련 문제