Utilisation de XPath pour accéder commentaires une hiérarchie plate
-
26-09-2019 - |
Question
J'ai un document XML donné (structure ne peut pas être modifié) et que vous souhaitez obtenir les commentaires qui sont écrits au-dessus des noeuds. Le document se présente comme suit:
<!--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>
Alors commentaires sont facultatifs, mais s'il y en a un, je veux obtenir le commentaire ci-dessus chaque attribut.
En utilisant /*/comment()[n]
me donnerait commenter n, mais pour n = 2 Je recevrais naturellement le commentaire du troisième attribut, donc il n'y a aucun lien entre les attributs et commentaires Toutes les idées?
Merci
La solution
Utilisez :
//comment()[following-sibling::*[1][self::attribute]]
Ceci est plus compact et plus précis que la réponse sélectionnée . L'abréviation de //
est nécessaire, car aucun document XML wellformed a été fourni et le niveau d'imbrication des nœuds de commentaire ne sait pas.
Autres conseils
Si vous voulez sélectionner les commentaires qui sont suivis par un élément attribute
, alors cela devrait fonctionner:
/*/comment()[following-sibling::*[position()=1 and name()='attribute']]