2012-12-03 2 views
-2

확인을 클릭하면 정보를 가져 오려는 노드 집합이 세 개 (이 경우 X 번호 일 수 있음) XPathSelectElements를 실행할 수있는 몇 가지 문제가 있습니다. XHTML과 호환되는 일부 HTML을 긁어 내고 XPathSelectElements를 사용하여이 예제에서 Order 객체의 X 번호를 찾아야합니다.XPathSelectElement 결과에서 XPathSelectElements

는 HTML/XML은 다음과 같이 뭔가 간체 고려 :

<RandomInfo> 
<NAME>ASDSADS</NAME> 
<WHAT>Dunno</NAME> 
<div id='OrderResults'> 
    <div id='order_foo'> 
    <ID>1</ID> 
    <Customer>Bill</Customer> 
    <Total>500</Total> 
    </div> 
    <div id='order_bar'> 
    <ID>2</ID> 
    <Customer>Bob</Customer> 
    <Total>200</Total> 
    </div> 
    <div id='order_abc'> 
    <ID>1</ID> 
    <Customer>Butch</Customer> 
    <Total>100</Total> 
    </div> 
</div> 
</RandomInfo> 

은 "order_ *"이름은 동적이며 노드를 선택하는에 의존 할 수 없습니다. 그래서 XPathSelectElements를 가지고 세 개의 div를 올바르게 가져옵니다. 그러나 각 XNode가 반환 된 XPathSelectElement ("// Customer")를 호출하려고 시도 할 때 항상 XPathSelectElement 호출에 대해 동일한 값을 반환합니다. VS를 사용하여 노드 객체가 변경되는 것을 볼 수 있지만 XPathSelectElement는 현재 노드에서 가져 오지 못합니다. 어떻게하면 그 자체로 '루트'로 강제로 바꾸는가? 그 대신 값을 얻기 위해 어떻게 든 부모 노드/doc로 돌아가는가?

+1

[so]에 오신 것을 환영합니다. C# 코드의 작은 스 니펫을 게시 할 수 있습니까? 감사 –

답변

1

그리고 //의 시작 (보통 묵시적) 현재 노드

/는 특정 노드의 childern 표현을 나타내는이 XPath를 사용할 수 있습니다 XPath는 문서 루트의 모든 노드를 나타냅니다. 따라서 어느 노드에 있더라도 문서의 모든 고객 노드와 항상 일치합니다. // (xpath 시작 부분이나 중간 부분) 성능에 매우 좋지 않으므로 피해야합니다!