XPath для выбора всех атрибутов и значений - PullRequest
0 голосов
/ 07 сентября 2018

Я работаю с некоторым XML, который хранит все свои данные в атрибутах. Мне нужно извлечь это для обработки данных. Итак, у нас есть что-то вроде:

<data>
  <level1>
    <level2 att1="1">
      <level 3>
        <level 4 att2="a" att3="b" att4="c" />
      </level 3>
      <level 3>
        <level 4 att2="1" att3="2" att4="3" />
      </level 3>
    </level 2>
    <level 2 att1="2">

Так что мне нужны все атрибуты из записей уровня 4 и их значений, но ТОЛЬКО из записей уровня 2, где att1 = 1. Я новичок в XPath, поэтому я еще не разработал его. Пока что лучшее, что я придумал, это:

/data/level1/level2[@att1='1']/level3/level4[@*]

но это возвращает пустые данные. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 07 сентября 2018

Чтобы получить все нужные значения атрибутов, вам нужно лишь немного изменить выражение XPath, как это (удалите последний предикат для прямого доступа к атрибутам):

/data/level1/level2[@att1='1']/level3/level4/@*

Перебор набора узлов этого выражения дает вам все желаемые значения и, если необходимо, имена их атрибутов.

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