Domanda

Ho un po 'di XML e una query XPath. Sto usando Yahoo! widget, quindi sto usando XPath 1.0.

Ecco l'essenza del mio 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>
        ....

Ora ... se eseguo questa query:

"root/cat/movie/swf"

Ottengo 42 risultati, tutti i nodi 'swf' che sono corretti.

Se, tuttavia, voglio solo il sesto, vorrei poterlo fare:

"root/cat/movie/swf[6]"

Ma ottengo un elenco contenente 0 nodi.

Stranamente, usando [1] (e nessun altro valore) si ottiene il mio elenco di tutti i 42 nodi.

Chiaramente qui mi manca qualcosa di abbastanza fondamentale. Qualcuno vede di cosa si tratta?

È stato utile?

Soluzione

Mi chiedo se intendi:

"root/cat/movie[6]/swf"

(ottiene lo swf del sesto film)

o in alternativa:

"(root/cat/movie/swf)[6]"

(trova tutti gli elementi movie / swf e seleziona il sesto)

Quando ogni film ha esattamente un swf, i due sono gli stessi; se un film ha zero o più elementi swf, le due query sono leggermente diverse ...

Altri suggerimenti

"root/cat/movie/swf[6]"

si riferisce a ciascun sesto nodo <swf> in "root/cat/movie" contesto.

Hai solo un <=> nodo ciascuno.

Quello che vuoi dire è:

"root/cat/movie[6]/swf"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top