XPath выбирает родительский атрибут и данные дочернего элемента - PullRequest
1 голос
/ 19 июня 2020

XPath newb ie здесь.

Есть ли способ выбрать список пар attr1 и child3 с помощью XPath из примера XML ниже?

In другими словами, мне нужен список a11, c13, a21, c23, et c.

Или я могу сделать только //parent и выбрать требуемые значения из массива результирующих узлов?

<parentList>
  <parent attr1="a11" attr2="a12">
    <child1>c11</child1>
    <child2>c12</child2>
    <child3>c13</child3>
    <child4>c14</child4>
    <child5>c15</child5>
  </parent>
  <parent attr1="a21" attr2="22">
    <child1>c21</child1>
    <child2>c22</child2>
    <child3>c23</child3>
    <child4>c24</child4>
    <child5>c25</child5>
  </parent>
</parentList>

Ответы [ 2 ]

2 голосов
/ 19 июня 2020

Это выражение xpath 2.0 (и правильное закрытие образца html)

//parent/concat(@attr1,' ',child3/text())

должно выводить:

a11 c13
a21 c23
0 голосов
/ 20 июня 2020

Решение XPath 1.0 для выбора интересующих элементов:

//parent/descendant-or-self::*[position()=1 or position()=4]

Но для создания списка данных вы должны использовать следующий:

(//@attr1|//text()[normalize-space()])[parent::parent or parent::*[parent::parent][count(preceding-sibling::*)=2]]

Ищите атрибут или текст с: parent элементом в качестве родительского или дочернего элемента parent в качестве родительского и двух предыдущих братьев и сестер.

Вывод: a11,c13,a21,c23

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...