如何解析具有多个属性和名称的 xml

如何解析具有多个属性和名称的 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>

假设有很多这样的行

答案1

使用 XMLStarlet 获取value带有“ ”prop的:nameone thing

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

这将 XPATH 查询应用于 XML,选择具有value 的节点的节点value下面的节点,然后提取这些节点的值。propnameone thing

为了简洁起见,我使用//prop它可以prop在文档中的任何位置找到节点。/conf/prop如果您知道prop您感兴趣的节点始终可以在根节点下找到conf,则可以将其更改为。

同样的事情xmllint

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

相关内容