Bash
如何解析具有多個屬性和名稱的 xml
如果我們有這樣的 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