Bash

如何解析具有多個屬性和名稱的 xml

  • October 1, 2019

如果我們有這樣的 XML 腳本,如何使用 XML 解析獲取特定名稱的值

<?XML>
<conf>
<prop><name>something</name><value>1</value></prop>
<prop><name>one thing</name><value>2</value></prop>
<prop><name>another thing</name><value>3</value></prop>
<prop><name>one more thing</name><value>4</value></prop>
</conf>

假設有這麼多這樣的行

使用 XMLStarlet 獲取帶有" “value的:prop``name``one thing

$ xmlstarlet sel -t -v '//prop[name = "one thing"]/value' -nl file.xml
2

這會將 XPATH 查詢應用於 XML,該查詢選擇value節點下方的prop節點,該name節點具有 value的節點one thing,然後提取這些節點的值。

為了簡潔起見,我使用//prop它可以在文件中的任何位置找到prop節點。/conf/prop如果您知道prop始終可以在根節點下找到您感興趣的節點,則可以將其更改為conf

同樣的事情xmllint

$ xmllint --xpath '//prop[name = "one thing"]/value/text()' file.xml
2

引用自:https://unix.stackexchange.com/questions/544569