Использование XPath для доступа к комментариям - PullRequest
3 голосов
/ 14 апреля 2010

У меня есть заданный XML-документ (структура не может быть изменена) и я хочу получить комментарии, написанные над узлами. Документ выглядит так:

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

Так что комментарии являются необязательными, но если они есть, я хочу получить комментарий над каждым атрибутом. Использование /*/comment()[n] даст мне комментарий n, но для n = 2 я естественно получу комментарий третьего атрибута, так что нет никакой связи между атрибутами и комментариями. Спасибо

Ответы [ 2 ]

1 голос
/ 14 апреля 2010

Если вы хотите выбрать комментарии, за которыми следует элемент attribute, то это должно работать:

/*/comment()[following-sibling::*[position()=1 and name()='attribute']]
0 голосов
/ 14 апреля 2010

Использование :

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

Это более компактный и точный ответ, чем выбранный в настоящее время ответ .Аббревиатура // необходима, поскольку не был предоставлен правильно сформированный документ XML и уровень вложенности узлов комментариев не известен.

...