Как изменить значение свойства с помощью augeas, позиция которого изменяется в XML?

У меня есть следующая проблема:

мой XML (упрощенный):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <properties>
    <property name="username">USERNAME</property>
    <property name="anything">blabla</property>
  </properties>
</configuration>

Мне нужно заменить значение имени пользователя на augeas. Он отлично работает с:

augtool> set /files/test.xml/configuration/properties/property[1]/#text NEWUSER

Но проблема в том, что запись имени пользователя НЕ всегда находится на первой позиции. Есть ли способ в augeas искать позицию с «совпадением» или каким-то регулярным выражением?

augtool> match /files/test.xml/configuration/properties/*/#attribute/name  username

отлично работает и приводит к

/files/test.xml/configuration/properties/property[1]/#attribute/name

Но я не знаю, как использовать эту информацию при установке значения.


person Dakkar    schedule 04.06.2013    source источник
comment
По умолчанию Augeas может просматривать файлы только в /etc/ и /boot, вы создали собственный объектив?   -  person spuder    schedule 15.11.2013


Ответы (1)


Что вам нужно сделать, это:

set /files/test.xml/configuration/properties/property[#attribute/name='username']/#text NEWUSER

Это выбирает свойство (/files/test.xml/configuration/properties/property), чей подузел #attribute/name соответствует username, и устанавливает его подузел #text как NEWUSER.

person raphink    schedule 04.06.2013
comment
Работает как шарм. Благодарю вас! - person Dakkar; 04.06.2013
comment
Как я могу проверить вставку нового элемента XML с указанным выше атрибутом, если он не существует, и изменить элемент XML с указанным выше атрибутом, если он существует? - person fruitJuice; 06.05.2015