<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将每个<element name="bar">true</element>
的值更新为同一<element name="foo">
中使用Linux shell脚本的<block>
的值。是否可以使用单个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>
答案 0 :(得分:2)
假设<element name="foo">
中只有一个<block>
,则以下内容应该有效:
xmlstarlet ed -u '//element[@name="bar" and text()="true"]' \
-x '../element[@name="foo"]/text()'