Извлечение одного значения из массива XML - PullRequest
0 голосов
/ 10 января 2020

У меня есть следующее XML:

<computer>
<extension_attributes>
    <extension_attribute>
      <id>22</id>
      <name>aname</name>
      <type>String</type>
      <multi_value>false</multi_value>
      <value>auidhg</value>
    </extension_attribute>
    <extension_attribute>
      <id>23</id>
      <name>ap</name>
      <type>String</type>
      <multi_value>false</multi_value>
      <value>d3HtVD</value>
    </extension_attribute>
</extension_attributes>
</computer>

Я хочу извлечь значение для элемента атрибута расширения с именем «aname» (т.е. я хочу значение auidhg). Мне интересно, есть ли оператор Xpath, который я могу использовать с xmllint?

1 Ответ

1 голос
/ 10 января 2020

Это должно быть легко, используя предикат для выбора правильного extension_attribute.

Этот XPath:

//extension_attribute[name='aname']/value

возвращает:

<value>auidhg</value>

Если вам просто нужно текстовое значение, вы можете выбрать текстовый узел ...

//extension_attribute[name='aname']/value/text()

или использовать string() или normalize-space() ...

normalize-space(//extension_attribute[name='aname']/value)

любой из этих возвращаемых значений:

auidhg

См. Мои ссылки выше для получения дополнительной информации о функциях string () и normalize-space () и о том, когда они могут быть предпочтительнее, чем просто выделение текста ().

...