2012-06-05 14 views
7

Ho un semplice requisito in cui ho bisogno di recuperare il valore dell'attributo xml:id i.e af1. Sto facendo uso di un SAXParser e qui è il mio xpath:a/aff/@xml:id al contrario sono stato in grado di recuperare il valore di utilizzando il xpath:a/aff/@value.Come recuperare il valore di un attributo che contiene due punti nel nome dell'attributo utilizzando xpath

Ma non sono riuscito a recuperare il valore, potresti aiutarmi per favore?

<?xml version="1.0" encoding="UTF-8" ?> 
<a> 
    <aff xml:id="af1" value="a"> 
     <uAff> 
      Hello 
     </uAff> 
    </aff> 
    <aff xml:id="corr1"> 
     <uAff> 
      Hello1 
     </uAff> 
    </aff> 
</a> 

Grazie in anticipo.

risposta

11

Per ottenere il valore degli attributi è possibile utilizzare:

/a/aff/@*[name()='xml:id'] 
+0

Grazie mille :-) La tua risposta è stata SPOT ON :-) Puoi dirmi come ottenere il valore del tag che ha colon.Say invece di aff se è aff: a, come possiamo analizzarlo? –

+0

se si ha aff: un poi aff deve essere uno spazio dei nomi, e questo è un problema diverso. dai un'occhiata qui: http://stackoverflow.com/questions/536441/xpath-namespace-driving-me-crazy – tibtof

+0

oppure puoi usare local-name() invece di name(), FWIW http://stackoverflow.com/a/11131700/32453 – rogerdpack

1

/a/aff/@ xml: id funziona bene a ottenere i valori ...

Stai cercando di ottenere entrambi i valori?

Se si sta cercando di ottenere solo il primo valore si potrebbe usare/a/aff [1]/@ xml: id

+0

La tua risposta è corretta se non ci sono due punti, ma quando ci sono due punti non recupera il valore dell'attributo con/a/aff/@ xml: id questo xpath. –