代码之家  ›  专栏  ›  技术社区  ›  mles

使用xmlstarlet添加xml元素中尚不存在的属性

  •  0
  • mles  · 技术社区  · 6 年前

    我有一个以

    <?xml version='1.0' encoding='utf-8'?>
    <widget 
      id="io.ionic.starter" 
      version="0.0.1" 
      xmlns="http://www.w3.org/ns/widgets" 
      xmlns:cdv="http://cordova.apache.org/ns/1.0"
    >
    

    我需要添加一个 ios-CFBundleVersion="de.test" 属性,所以它应该如下所示:

    <?xml version='1.0' encoding='utf-8'?>
    <widget 
      id="io.ionic.starter" 
      version="0.0.1" 
      xmlns="http://www.w3.org/ns/widgets" 
      xmlns:cdv="http://cordova.apache.org/ns/1.0"
      ios-CFBundleVersion="de.test"
    >
    

    我在xmlstarlet上试过:

    xmlstarlet edit \
      -O \
      --inplace \
      --insert "widget" \
      --type attr \
      -n ios-CFBundleVersion \
      -v de.test \
      config.xml 
    

    但我的档案里什么都没发生 config.xml .这里正确的xmlstarlet命令是什么?

    1 回复  |  直到 6 年前
        1
  •  2
  •   zx485 potemkin    6 年前

    你忘了 widget 元素有名称空间,因此XPath不匹配。所以用 -N 全局选项 你的命令开始生效:

    xmlstarlet edit --inplace -O -N x=http://www.w3.org/ns/widgets  \
                    --insert "x:widget" --type attr \
                    -n "ios-CFBundleVersion" -v "de.test" config.xml