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シェルスクリプトで、every<element name="bar">true</element>の値を<element name="foo">in theの値に更新したいと考えています。<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

に 1 つしかないと仮定すると<element name="foo"><block>次のように動作するはずです。

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