* NIX CLI:过滤,查询XML属性和显示

时间:2015-04-14 19:37:51

标签: xml unix xpath command-line-interface

鉴于文件:

/// @file test.xml
<xml-fragment>
  <string name="foo" value="bar"/>
</xml-fragment>

要过滤的路径xml-fragment/string和属性&amp; value name="foo"以及要查询的属性value 我应该如何获得{{1} }}?

使用"bar",我有:

xmlstarlet

似乎有效,但我想知道是否有更好的方法?

我甚至不需要使用xmlstarlet sel -t -m '/xml-fragment/string[attribute::name="foo"]' \ -v 'attribute::bar' test.xml ;我之前尝试过xmlstarletxmllintxsltproc,但无法使用这些功能。

1 个答案:

答案 0 :(得分:1)

我不确定这是否“更好”,但你可以在整个xpath中使用-v。您还可以使用@ abbreviated syntax

示例(在Windows中测试;可能需要更改引号)

xmlstarlet sel -t -v "/xml-fragment/string[@name='foo']/@value" test.xml

您列出的任何其他工具也应该有效。如果您只是获得一个值,xsltproc可能会有点过分。只要你是not using regex,你应该没问题。