0

源 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>的值更新为<element name="foo">相同的值。<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>
4

1 回答 1

3

假设 中只有一个<element name="foo"><block>以下应该有效:

xmlstarlet ed -u '//element[@name="bar" and text()="true"]' \
              -x '../element[@name="foo"]/text()'
于 2013-09-24T15:09:48.963 回答