문제

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"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top