【问题标题】:Update value of XML attributes using Shell使用 Shell 更新 XML 属性的值
【发布时间】:2015-01-01 22:17:39
【问题描述】:

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

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

我想在我的 Bash 脚本中更改属性 'version'、'id' 和 'android-versionCode' 的值。

在脚本中我可以访问 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>

【问题讨论】:

    标签: xml shell awk sed xml-parsing


    【解决方案1】:

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

    id 属性示例:

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

    你现在只需要为其他的调整这个 sn-p。

    注意

    【讨论】:

    • @LadislavMaxa:请删除您已弃用的 cmets
    【解决方案2】:

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

    sed -i "s|dev.apk|$ID|g" test.xml

    但如果您已经在使用构建工具,您可能想看看用占位符替换您的值并拥有目标环境文件

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

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

    【讨论】:

    • 但 XML 文件不适用于 Android,它适用于 Cordova。
    猜你喜欢
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 2020-05-30
    • 2012-02-28
    相关资源
    最近更新 更多