![如何解析具有多个属性和名称的 xml](https://linux22.com/image/161526/%E5%A6%82%E4%BD%95%E8%A7%A3%E6%9E%90%E5%85%B7%E6%9C%89%E5%A4%9A%E4%B8%AA%E5%B1%9E%E6%80%A7%E5%92%8C%E5%90%8D%E7%A7%B0%E7%9A%84%20xml.png)
如果我们有这样的 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>
假设有很多这样的行
答案1
使用 XMLStarlet 获取value
带有“ ”prop
的:name
one thing
$ xmlstarlet sel -t -v '//prop[name = "one thing"]/value' -nl file.xml
2
这将 XPATH 查询应用于 XML,选择具有value 的节点的节点value
下面的节点,然后提取这些节点的值。prop
name
one thing
为了简洁起见,我使用//prop
它可以prop
在文档中的任何位置找到节点。/conf/prop
如果您知道prop
您感兴趣的节点始终可以在根节点下找到conf
,则可以将其更改为。
同样的事情xmllint
:
$ xmllint --xpath '//prop[name = "one thing"]/value/text()' file.xml
2