如何用Python或Linux命令合并XML重复header标签与多段payload
合并XML中重复标签的实现方案
Python脚本实现
适用于结构规范的XML文件,通过XML解析库安全处理标签合并:
import xml.etree.ElementTree as ET # 读取目标XML文件 tree = ET.parse('input.xml') root = tree.getroot() # 定位所有<header1>标签 header_list = root.findall('header1') if len(header_list) > 1: # 以第一个<header1>作为合并目标 target_header = header_list[0] # 遍历剩余标签,合并内容 for header in header_list[1:]: # 迁移子元素 for child in header: target_header.append(child) # 处理文本内容,保留原有格式缩进 if header.text: if target_header.text: target_header.text = target_header.text.rstrip() + '\n' + header.text else: target_header.text = header.text # 删除多余的<header1>标签 root.remove(header) # 写入合并后的XML文件 tree.write('output.xml', encoding='utf-8', xml_declaration=True)
Linux命令行实现
用awk快速处理文本格式的XML,适合简单场景:
awk ' /<header1>/ { if (!first) { print $0 first = 1 in_content = 1 } else { in_content = 1 next } } /<\/header1>/ { if (first) { print $0 first = 0 in_content = 0 } else { in_content = 0 next } } in_content { print $0 } ' input.xml > output.xml
示例说明
输入XML(input.xml):
<root> <header1> payload1 </header1> <header1> payload2 </header1> </root>
输出XML(output.xml):
<root> <header1> payload1 payload2 </header1> </root>
内容的提问来源于stack exchange,提问作者Miya
相关产品推荐
相关产品推荐

