xml - 从命令行合并多个 XML 文件

标签 xml command-line merge

我有几个 xml 文件。它们都具有相同的结构,但由于文件大小而被拆分。所以,假设我有 A.xmlB.xmlC.xmlD.xml 以及想要使用命令行工具将它们组合/合并到 combined.xml

A.xml

<products>
    <product id="1234"></product>
    ...
</products>

B.xml

<products>
  <product id="5678"></product>
  ...
</products>

等等

最佳答案

高科技回答:

将此 Python 脚本保存为 xmlcombine.py:

#!/usr/bin/env python
import sys
from xml.etree import ElementTree

def run(files):
    first = None
    for filename in files:
        data = ElementTree.parse(filename).getroot()
        if first is None:
            first = data
        else:
            first.extend(data)
    if first is not None:
        print(ElementTree.tostring(first))

if __name__ == "__main__":
    run(sys.argv[1:])

要合并文件,运行:

python xmlcombine.py ?.xml > combined.xml

要进一步增强,请考虑使用:

  • chmod +x xmlcombine.py: 允许您在命令行中省略 python

  • xmlcombine.py !(combined).xml > combined.xml: 收集除输出之外的所有 XML 文件,但需要 bash 的 extglob 选项

  • xmlcombine.py *.xml |海绵组合.xml: 也收集 combined.xml 中的所有内容,但需要 sponge 程序

  • 将 lxml.etree 导入为 ElementTree: 使用可能更快的 XML 解析器

关于xml - 从命令行合并多个 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9004135/

相关文章:

xml - WinRT 中的 HttpUtility.HtmlDecode

xml - xQuery 更改节点层次结构(从一个节点中删除子节点并将其作为兄弟节点返回)

linux - 根据另一个位置的目录列表从一个位置删除一堆目录?

android - 如何在android中将8位和16位pcm文件合并到单独的音频 channel 中

git - 如何 merge 单个提交?

java - 使用java中的正则表达式从无效/部分xml中提取值

xml - 有没有适合新手的 XML/XSD 教程?

java - Gradle 不允许通过 Windows 命令提示符输入

node.js - Node 脚本可执行文件在 Mac : env: node\r: No such file or directory 上不起作用

python - 如何将多个 Excel xlsm 文件与多个工作表合并到一个数据集中?