使用带命名空间的xmlstarlet查询xml文件的值

时间:2015-01-16 21:59:50

标签: xml xmlstarlet

使用这个xml:

<application xmlns="http://ns.adobe.com/air/application/14.0">
    <id>5555</id>
    <filename>product2</filename>
    <name>prodigy</name>
    <versionNumber>6.5.511</versionNumber>
    <versionLabel>6.5.5110</versionLabel>
</application>

此命令不起作用,不返回任何内容:

xml sel -t -c "/application/versionLabel" application.xml

但是,从应用程序中删除xmlns属性确实有效。为什么呢?

1 个答案:

答案 0 :(得分:1)

试试这个:

 xmlstarlet sel -N x="http://ns.adobe.com/air/application/14.0" -t -m "/x:application/x:versionLabel" -c . -n file

或(使用默认命名空间):

xmlstarlet sel -t -v "/_:application/_:versionLabel" file

输出:

<versionLabel xmlns="http://ns.adobe.com/air/application/14.0">6.5.5110</versionLabel>