2

次の XML の場合:

<properties>
  <entry key="foo">bar</entry>
</properties>

次の augeas コマンドを使用して、属性「foo」を持つ既存のエントリを更新できます。

set /files/test.xml/properties/entry[#attribute/key='foo']/#text bar2

入力属性を持つ既存のエントリがない場合に (キー属性を持つ) 新しいノードを作成し、入力属性を持つエントリが既に存在する場合は既存を更新する augeas コマンドはありますか? 私は次のことを試しました:

set /files/test.xml/properties/entry[#attribute/key='hello']/#text world

ただし、これは属性なしで次の結果になるだけです。

<properties>
  <entry key="foo">bar2</entry>
  <entry>world</entry>
</properties>
4

2 に答える 2

0

この出力が必要であると仮定します。

<properties>
    <entry key="foo">bar</entry>
    <entry key="hello">world</entry>
</properties>

次のコードでうまくいくはずです。

set /augeas/load/Xml/incl[2] /path/to/file.xml
load
defvar properties "/files/path/to/file.xml/properties"
set $properties/entry[last()+1]/#attribute/key "hello"
set $properties/entry[last()]/#text "world"
save
于 2015-11-26T17:27:21.013 に答える