Обновить атрибут, который существует в элементе 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"
>

Мне нужно изменить значение атрибута id, чтобы оно выглядело так:

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

У меня естьпопробовал это с xmlstarlet:

xmlstarlet edit \
  --inplace \
  -O \
  -N \
  x=http://www.w3.org/ns/widgets \
  --update "x:widget@id" \
  --value "sdf" \
  config.xml

но я получаю Invalid expression: x:widget@id.Какой будет правильная команда xmlstarlet здесь?

1 Ответ

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

В XPath имена атрибутов, обозначенные @, должны отделяться косой чертой / от элемента.

Поэтому вместо

--update "x:widget@id"

используйте

--update "x:widget/@id"
...