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

Était-ce utile?

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']]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top