2016-08-11 4 views
0

У меня очень странный XML-файл, который мне нужно обновить с помощью augeas.Как перемещаться по XML с augeas xml

<root> 
    <node name="Client"> 
     <node name="Attributes"> 
      <info> 
       <test> 
        <entry><key>colour</key><value type="string">blue</value></entry> 
       </test> 
      </info> 
     </node> 
    </node> 
    <node name="Network"> 
     <node name="Server"> 
      <info> 
       <test> 
        <entry><key>transport</key><value type="string">internet</value></entry> 
        <entry><key>ipAddr</key><value type="string">125.125.125.142</value></entry> 
        <entry><key>portNo</key><value type="string">1234</value></entry> 
        <entry><key>protocolType</key><value type="string">tcp</value></entry> 
       </test> 
      </info> 
     </node> 
    </node> 
</root> 

мне нужно обновить элемент «значение», которое только после того, как «ключ» элемент, который содержит текст IPAddr.

ответ

0

На основании вашего описания узла, который нужно обновить, вот предложение:

set /files/path/to/your/file.xml//entry[key/#text="ipAddr"]/value/#text "255.255.255.0" 

Это выбирает entry узел на любом уровне в файле, который имеет key/#text подузел со значением ipAddr, а затем он обновляет свой подканал value/#text, чтобы иметь значение 255.255.255.0.

+0

Это дает мне IPAddr 255.255.255.0<тип значения = "строка"> 125.125.125.142 вместо IPAddr<значение типа = "строка"> 255.255.255.0 Vash

+0

@ Ваш, я не могу воспроизвести это. Ответ, похоже, работает так, как описано для меня против файла образца - проверьте, правильно ли вы скопировали его? –

+0

Это работает, я имел квадратную скобку в неправильном месте. Ура! – Vash

 Смежные вопросы

  • Нет связанных вопросов^_^