2016-06-27 10 views
1

코드는 IronPython의에 있으며 여기있다 :XPath 유효성 검사기가 올바른 결과를 반환 할 때 XmlNode.SelectNodes가 빈 목록을 반환하는 이유는 무엇입니까?

for systemNode in csResultXML.SelectNodes("Response/SubSystems/SubSystem"): 

    itemNodes = systemNode.SelectNodes('/SubSystem/Items/Item') 

단일 루프 사이클에서 systemNode의 값은 다음과 같습니다 코드가 완료되면

<SubSystem ID="0"> 
    <Items> 
    <Item> 
     <Quantity>1</Quantity> 
     <TotalPrice>0.0</TotalPrice> 
    </Item> 
    <Item> 
     <Quantity>1</Quantity> 
     <TotalPrice>0.0</TotalPrice> 
    </Item> 
    </Items> 
</SubSystem> 

itemNodes은 빈 목록입니다.

왜? XPath 온라인 유효성 검사기가 결과를 올바르게 되돌립니다.

시간 당신은 컨텍스트 노드 (당신의 systemNode 변수)가 아니라 문서 노드 /Items 자식 요소의 Items 자식 요소를 선택합니다으로 systemNode.SelectNodes('Items/Item')를 사용할 필요가

답변

2

주셔서 감사합니다.

+0

마틴, 사과. 나는 systemNode.SelectNodes ('/ SubSystem/Items/Item')를 사용하고 있었고, 상단에있는 옵션 중 하나를 복사/붙여 넣기했습니다. 나는 그 질문을 편집하고있다. 하지만 맞아,이게 문제를 해결해 줬어. systemNode.SelectNodes ('/ SubSystem/Items/Item')가 작동하지 않는 이유를 알 수 없습니다. –

+0

첫 번째 표현식은'SubSystem' 요소를 선택하고'/'로 시작하는 절대 경로가 아닌'Items/Item'과 같은 상대 경로를 사용해야하는 내부 요소를 선택합니다. 그리고 컨텍스트 노드가 이미'SubSystem' 엘리먼트라면'SubSystem' 엘리먼트를 중첩하지 않았다면 다시'SubSystem'으로 시작할 수 없습니다. –