使用Shell更新XML属性的值

时间:2014-11-05 16:20:14

标签: xml shell awk sed xml-parsing

我的config.xml里面有以下行。

<widget id="dev.apk" version="2.5-dev" android-versionCode="20500-dev">

我希望更改属性值&#39;版本&#39; id&#39;和&#39; android-versionCode&#39;在我的Bash脚本中。

在脚本中我可以访问ID,VERSION和VERSION_CODE变量,如下所示:

ID ="release.apk"
VERSION="2.5"
VERSION_CODE="20500"

我想使用xmlstarlet或sed。 什么是最好的方式?

更新

我的.xml文件如下所示:

<?xml version="1.0" encoding="utf-8"?> 
<widget xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" id="app" version="2.5" android-versionCode="20500"> 
<name>App title</name> 
<description>Dummy dummy text.</description> 
</widget>

2 个答案:

答案 0 :(得分:2)

您可以这样做来编辑就地 xml文件:

id属性的示例:

xmlstarlet edit -L -u "/_:widget/@id" -v "$ID" file.xml

您现在只需要将此代码段改为其他代码段。

答案 1 :(得分:0)

您可以在sed中执行以下操作。

sed -i&#34; s | dev.apk | $ ID | g&#34;的test.xml

但是,如果您已经在使用构建工具,那么您可能希望看看用占位符替换您的值并使用目标环境文件

我相信gradle中有一些占位符支持

http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger