如何将 XmlStarlet 与条件一起使用



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()'

相关内容

  • 没有找到相关文章

最新更新