You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将一个XML文件插入到另一个XML文件的指定标记位置

目标文件和源文件均为XML类型文件。
使用sed实现需求时遇到了困难,因为该工具对特殊字符的兼容性不佳,而这两个XML文件中包含大量特殊字符。
调研发现可以使用awk实现该功能,但对awk的使用非常不熟悉,因此寻求解决方案。

补充说明

带标记位置的主XML文件内容

<?xml version="1.0" encoding="utf-8"?>
<ip>
<?processing instructions?>
<lista>

<!--> EKOLOGIA +5 <-->
<kategoria nazwa="EKO" thumb="/home/xvision/ip/swf/EKO/eko.png">
</kategoria>
<!-- KONIEC PAKIETU <-->

<!--temp-->
</lista>
</ip>

需要插入的XML文件内容

<!--> PAKIET FUN 50 GIER <-->
<kategoria nazwa="EDU" thumb="/home/xvision/ip/swf/EDU/edu.png">
</kategoria>

期望的最终文件效果

<?xml version="1.0" encoding="utf-8"?>
<ip>
<?processing instructions?>
<lista>

<!--> EKOLOGIA +5 <-->
<kategoria nazwa="EKO" thumb="/home/xvision/ip/swf/EKO/eko.png">
</kategoria>
<!-- KONIEC PAKIETU <-->

<!--> PAKIET FUN 50 GIER <-->
<kategoria nazwa="EDU" thumb="/home/xvision/ip/swf/EDU/edu.png">
</kategoria>
</lista>
</ip>

解决方案

你可以直接使用以下awk命令完成内容插入,该方案会逐行原封不动输出内容,不会受XML特殊字符影响:

awk '
# 匹配到主文件里的临时标记行
/<!--temp-->/{
    # 读取待插入文件的所有内容并输出
    while((getline line < "insert.xml") > 0){
        print line
    }
    close("insert.xml")
    # 跳过原临时标记行
    next
}
# 其余行正常输出
1' main.xml > final.xml

使用说明:将命令中的main.xml替换为你的主XML文件路径,insert.xml替换为待插入的XML文件路径,执行命令后生成的final.xml就是符合预期的最终文件。


内容的提问来源于stack exchange,提问作者kamil_debski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:15:01