*NIX CLI:过滤器、查询 XML 属性和显示
*NIX CLI: Filter, Query XML Attribute and Display
给定文件:
/// @file test.xml
<xml-fragment>
<string name="foo" value="bar"/>
</xml-fragment>
要过滤的路径 xml-fragment/string
和属性&值 name="foo"
,以及要查询的属性 value
,我如何 应该 "bar"
?
使用 xmlstarlet
,我有这个:
xmlstarlet sel -t -m '/xml-fragment/string[attribute::name="foo"]' \
-v 'attribute::bar' test.xml
这似乎可行,但我想知道是否有更好的方法?
我什至不需要使用 xmlstarlet
;我之前尝试过 xmllint
、xsltproc
和 xpath
,但无法使它们起作用。
我不确定这是否是 "better",但您可以将 -v
与整个 xpath 一起使用。您也可以使用 @
abbreviated syntax.
示例(在 windows 中测试;引号可能需要更改)
xmlstarlet sel -t -v "/xml-fragment/string[@name='foo']/@value" test.xml
您列出的任何其他工具也应该可以使用。如果您只是获得一个值,xsltproc
可能有点矫枉过正。只要你是not using regex,就应该没问题。
给定文件:
/// @file test.xml
<xml-fragment>
<string name="foo" value="bar"/>
</xml-fragment>
要过滤的路径 xml-fragment/string
和属性&值 name="foo"
,以及要查询的属性 value
,我如何 应该 "bar"
?
使用 xmlstarlet
,我有这个:
xmlstarlet sel -t -m '/xml-fragment/string[attribute::name="foo"]' \
-v 'attribute::bar' test.xml
这似乎可行,但我想知道是否有更好的方法?
我什至不需要使用 xmlstarlet
;我之前尝试过 xmllint
、xsltproc
和 xpath
,但无法使它们起作用。
我不确定这是否是 "better",但您可以将 -v
与整个 xpath 一起使用。您也可以使用 @
abbreviated syntax.
示例(在 windows 中测试;引号可能需要更改)
xmlstarlet sel -t -v "/xml-fragment/string[@name='foo']/@value" test.xml
您列出的任何其他工具也应该可以使用。如果您只是获得一个值,xsltproc
可能有点矫枉过正。只要你是not using regex,就应该没问题。