obtinerea XmlSearch pentru a reveni doar pe frati, nu pe copii

Am primit un răspuns SOAP care arată astfel:


    A
    foo
    Task


    B
    bar
    Appointment


    C
    snafu
    Task

În Coldfusion, încercam să analizez nodurile de activitate cu următorul text:


Problema este că, în schimb, dacă obțin un matrice cu trei elemente, obțin un șir de șase: 3 de părinte și 3 de copii.

Nu pot, pentru viața mea, să-mi dau seama că declarația XPath nu va găsi decât frați, și nu copii.

Te rog ajuta-ma.

2

1 răspunsuri

Use:

//*[name()='Activity' and not(ancestor::*[name()='Activity' ])]

This selects all elements in the document, whose name is "Activity" and that do not have an ancestor with name "Activity".

1
adăugat
Minunat, Dimitre. Asta a făcut trucul. Mulțumesc, am învățat ceva.
adăugat autor dbrosier, sursa
@PavelVeller: OP-ul a furnizat un fragment și nu este garantat că va fi "înmulțit" de elementul superior din documentul XML. Ghicitul nu are sens.
adăugat autor Dimitre Novatchev, sursa
@ Leigh: observație bună - corectată.
adăugat autor Dimitre Novatchev, sursa
@PavelVeller: Da, pentru unele documente xml prima expresie nu selectează un nod, în timp ce al doilea nu. Răspunsul SOAP poate fi de tipul celui de-al doilea.
adăugat autor Dimitre Novatchev, sursa
@ Leigh: Sunteți bineveniți.
adăugat autor Dimitre Novatchev, sursa
@dbrosier: Sunteți bineveniți.
adăugat autor Dimitre Novatchev, sursa
S-ar putea să greșesc, dar nu cred că încearcă să excludă pe cei cu un copil numit Activity . Dar luați elementele părinte Activity în loc de copil, adică Task
adăugat autor Leigh, sursa
@DimitreNovatchev - Cool. Se pare că ar face-o.
adăugat autor Leigh, sursa
sau "simplificarea" :) lucruri, poate doar o simplă /*/Activity ?
adăugat autor Pavel Veller, sursa
@DimitreNovatchev, destul de corect. //Activitate [nu (strămoș :: Activity)] . există o diferență între Activity și * [name() = 'Activity]] altceva decât lungimea expresiei?
adăugat autor Pavel Veller, sursa