代码之家  ›  专栏  ›  技术社区  ›  aberrant80

用另一个XML元素替换一个XML元素

  •  0
  • aberrant80  · 技术社区  · 16 年前

    我感兴趣的是找出用第二个文件中的另一个XML元素替换文件中的一个XML元素所能编写的最短脚本是什么。

    我可以编写一个简单的程序来轻松地完成这项工作,但我想知道是否可以使用shell脚本轻松地完成这项工作。它只是一个实用工具,只是为了方便。这可以通过使用 sed awk ? 我不熟悉这些。我想我也许可以结合 grep 和 wc ,但似乎有一种更直接的方法。

    基本上,我有一个很大的配置文件,比如 config.xml ,看起来是这样的:

    <config>
        <element name="a">
            <subelement />
        </element>
        <element name="b">
            <subelement />
        </element>
        <element name="c">
            <subelement />
        </element>
        <!-- and so on... -->
    </config>
    

    偶尔,更改需要我修改/添加/删除一个 subelement subconfig.xml ,如以下文件:

    <config>
        <element name="c">
            <subelement />
            <subelement />
        </element>
    </config>
    

    我的想法是如果我能 element 在里面 并替换现有的 配置.xml 嘿,那太好了!是的,这不是一个很大的工作节省,因为它只需要很少,但它只是我想到,我可以尝试在一个脚本,但我不知道如何做到这一点。

    2 回复  |  直到 16 年前
        1
  •  1
  •   ghostdog74    16 年前

    $ subconfig=(<subconfig.xml)
    $ awk -v subconf=$subconfig '/<config>/{print subconf}/<config>/,/<\/config>/{next}1' config.xml
    
        2
  •  1
  •   Richard H    16 年前

    我不会尝试用命令行工具来做这件事,你会遇到各种各样的困难。您应该使用适当的XML解析器来实现这一点。逻辑是:使用原始文件,解析它,使用更新文件,解析它,确定这个家伙要替换哪个节点,进行替换,写出结果。