Source XML
<xml>
<block>
<element name="foo">92346523</element>
<element name="bar">true</element>
</block>
<block>
<element name="foo">89753298</element>
<element name="bar">true</element>
</block>
<block>
<element name="foo">67897324</element>
<element name="bar">false</element>
</block>
</xml>
我想使用 XmlStarlet 的 Linux shell 脚本将每个<element name="bar">true</element>
的值更新为同一<block>
中<element name="foo">
的值。单个xml ed
命令是否可行?
预期成果
<xml>
<block>
<element name="foo">92346523</element>
<element name="bar">92346523</element>
</block>
<block>
<element name="foo">89753298</element>
<element name="bar">89753298</element>
</block>
<block>
<element name="foo">67897324</element>
<element name="bar">false</element>
</block>
</xml>
假设<block>
中只有一个<element name="foo">
,以下方法应该有效:
xmlstarlet ed -u '//element[@name="bar" and text()="true"]'
-x '../element[@name="foo"]/text()'