如果我们有这样的 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