xpath 1.0에서 n번째 항목을 선택하는 방법은 무엇입니까?
-
19-08-2019 - |
문제
XML과 XPath 쿼리가 있습니다.저는 야후!를 사용하고 있습니다.위젯이므로 XPath 1.0을 사용하고 있습니다.
내 XML의 요지는 다음과 같습니다.
<root>
<cat num="SOURCE">
<movie>
<swf>speak.swf</swf>
<width>250</width>
<height>150</height>
<colour>cccccc</colour>
</movie>
<movie>
<swf>inertia.swf</swf>
<width>380</width>
<height>130</height>
<colour>9a9a9a</colour>
</movie>
<movie>
<swf>swing.swf</swf>
<width>380</width>
<height>130</height>
<colour>9A9A9A</colour>
</movie>
....
지금...이 쿼리를 실행하면:
"root/cat/movie/swf"
42개의 결과를 얻었는데, 모두 'swf' 노드가 맞습니다.
그러나 6번째 항목만 원한다면 다음을 수행할 수 있습니다.
"root/cat/movie/swf[6]"
하지만 0개의 노드가 포함된 목록을 얻습니다.
이상하게도 [1](다른 값 없음)을 사용하면 42개 노드 전체의 목록이 생성됩니다.
분명히 나는 여기서 아주 근본적인 것을 놓치고 있습니다.그게 뭔지 아는 사람 있나요?
해결책
다음을 의미하는지 궁금합니다.
"root/cat/movie[6]/swf"
(6번째 영화의 SWF를 얻습니다)
또는 대안적으로:
"(root/cat/movie/swf)[6]"
(모든 movie/swf 요소를 찾아 6번째 요소 선택)
각 영화에 정확히 하나의 SWF가 있는 경우 두 개는 동일합니다.영화에 0개 또는 여러 개의 swf 요소가 있는 경우 두 쿼리는 미묘하게 다릅니다.
다른 팁
"root/cat/movie/swf[6]"
각 6번째를 말합니다 <swf>
노드 인 "root/cat/movie"
문맥.
당신은 단 하나뿐입니다 <swf>
노드 각각.
당신이 의미하는 바는 다음과 같습니다
"root/cat/movie[6]/swf"
제휴하지 않습니다 StackOverflow