Usando XPath para el acceso comenta una jerarquía plana
-
26-09-2019 - |
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
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']]