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')
를 사용할 필요가
마틴, 사과. 나는 systemNode.SelectNodes ('/ SubSystem/Items/Item')를 사용하고 있었고, 상단에있는 옵션 중 하나를 복사/붙여 넣기했습니다. 나는 그 질문을 편집하고있다. 하지만 맞아,이게 문제를 해결해 줬어. systemNode.SelectNodes ('/ SubSystem/Items/Item')가 작동하지 않는 이유를 알 수 없습니다. –
첫 번째 표현식은'SubSystem' 요소를 선택하고'/'로 시작하는 절대 경로가 아닌'Items/Item'과 같은 상대 경로를 사용해야하는 내부 요소를 선택합니다. 그리고 컨텍스트 노드가 이미'SubSystem' 엘리먼트라면'SubSystem' 엘리먼트를 중첩하지 않았다면 다시'SubSystem'으로 시작할 수 없습니다. –