2012-06-05 13 views
7

Tengo un requisito simple en el que necesito obtener el valor del atributo xml:id, es decir, af1. Estoy haciendo uso de un SAXParser y aquí está mi xpath:a/aff/@xml:id, por el contrario, pude obtener valor de usar el xpath:a/aff/@value.Cómo recuperar el valor de un atributo que contiene dos puntos en el nombre del atributo usando xpath

Pero no pude recuperar el valor ¿podría ayudarme?

<?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> 

Gracias de antemano.

Respuesta

11

Para obtener el valor de los atributos que puede usar:

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

Muchas gracias :-) Su respuesta fue SPOT ON :-) ¿Puede indicar cómo obtener el valor de la etiqueta que tiene dos puntos? En lugar de aff si fue aff: a, ¿cómo podemos analizarlo? –

+0

si tiene aff: a entonces aff debe ser un espacio de nombres, y ese es un problema diferente. échele un vistazo aquí: http://stackoverflow.com/questions/536441/xpath-namespace-driving-me-crazy – tibtof

+0

o puede usar local-name() en lugar de name(), FWIW http://stackoverflow.com/a/11131700/32453 – rogerdpack

1

/a/aff/@ xml: id funciona muy bien para conseguir los valores ...

¿Estás tratando de obtener ambos valores?

Si usted está tratando de obtener sólo el primer valor se puede usar/a/aff [1]/@ xml: id

+0

Su respuesta es correcta si no hay dos puntos, pero cuando hay dos puntos, no obtiene el valor del atributo con/a/aff/@ xml: id este xpath. –

Cuestiones relacionadas