Pregunta

Tengo un documento XML en cuestión (estructura no se puede cambiar) y desea obtener los comentarios que se escriben encima de los nodos. El documento es similar al siguiente:

<!--Some comment here-->    
    <attribute name="Title">Book A</attribute>
    <attribute name="Author">
       <value>Joe Doe</value>
       <value>John Miller</value>
    </attribute>
<!--Some comment here-->
    <attribute name="Code">1</attribute>
comentarios

Así son opcionales, pero si hay uno, que quieren obtener el comentario sobre cada atributo. Usando /*/comment()[n] me diera a comentar n, pero para n = 2 Yo, naturalmente, conseguir el comentario del tercer atributo, por lo que no hay conexión entre los atributos y comenta ¿Alguna idea? Gracias

¿Fue útil?

Solución

Uso

//comment()[following-sibling::*[1][self::attribute]]

Esto es más compacta y precisa que la respuesta seleccionada actualmente . La abreviatura // es necesario, ya que no se proporcionó ningún documento XML bien formada y el nivel de anidamiento de los nodos de comentario no se conoce.

Otros consejos

Si desea seleccionar los comentarios que son seguidos por un elemento attribute, entonces esto debería funcionar:

/*/comment()[following-sibling::*[position()=1 and name()='attribute']]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top