Добавьте атрибут, который еще не существует в элементе xml, с помощью xmlstarlet - PullRequest
0 голосов
/ 24 мая 2018

У меня есть XML-файл, начинающийся с

<?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 Ответ

0 голосов
/ 24 мая 2018

Вы забыли, что элемент 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
...