在bash

时间:2016-03-22 09:11:50

标签: xml bash xpath xmllint

有以下config.xml文件(该文件来自源存储库,我无法在自动化过程中更改;我可以更改构建过程,因此有关如何提取两个属性的想法,androidversionCode和iosCFBundleVersion会不胜感激。

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.company.project" version="1.2.8" androidversionCode="209" iosCFBundleVersion="209" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>Project name</name>
    <description>Project description</description>
</widget>

我尝试了什么:

$ xmllint --xpath "string(//widget/@id)" config.xml

仅在xmlns =&#34; http://www.w3.org/ns/widgets"从文件中删除。如果我设置xmlns =&#34;&#34;然后它也有效,但我发现没有其他情况它将返回id或任何版本代码。所以,xmlns =&#34;某事&#34;使xpath失败,对吧?

如何使这项工作并获取这些版本号?

1 个答案:

答案 0 :(得分:0)

决议是:

xmllint --xpath 'string(//*[local-name()="widget"]/@id)' config.xml