Использование XPath для доступа к комментариям плоский иераши
-
26-09-2019 - |
Вопрос
У меня есть данный документ 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 я бы естественно получил комментарий третьего атрибута, поэтому нет связи между атрибутами и комментариями любых идей? Спасибо
Решение
Использовать:
//comment()[following-sibling::*[1][self::attribute]]
Это более компактно и точно, чем выбранный в данный момент ответ. Отказ То //
Аббревиатура необходима, поскольку не был предоставлен безработный XML-документ, а уровень вложенности узлов комментариев не известен.
Другие советы
Если вы хотите выбрать комментарии, сопровождаемые attribute
Элемент, то это должно работать:
/*/comment()[following-sibling::*[position()=1 and name()='attribute']]