将一个大的 .xml 文件拆分为多个 .xml 文件 (python)

Split one large .xml file in more .xml files (python)

几天来,我一直在尝试将一个大的 .xml 文件拆分为 python 中的更多 .xml 文件。问题是我还没有真正成功。所以在这里我请求你的帮助。

我的大 .xml 文件如下所示:

<Root>
     <Testcase>
          <Info1>[]<Info1>
          <Info2>[]<Info2>
     </Testcase>
     <Testcase>
          <Info1>[]<Info1>
          <Info2>[]<Info2>
     <Testcase>
     ...
     ...
     ...
     <Testcase>
          <Info1>[]<Info1>
          <Info2>[]<Info2>
     <Testcase>
</Root>

它有超过 2000 个 children,我想做的是解析这个 .xml 文件并拆分成包含 100 个 children 的更小的 .xml 文件每个。这将产生 20 个新的 .xml 文件。

我该怎么做?

谢谢!

L.E.:

我尝试使用 xml.etree.ElementTree

解析 .xml 文件
import xml.etree.ElementTree as ET
file = open('Testcase.xml', 'r')
tree = ET.parse(file)

total_testcases = 0

for Testcase in root.findall('Testcase'):
    total_testcases+=1

nr_of_files = (total_testcases/100)+1

for i in range(nr_of_files+1):
    tree.write('Testcase%d.xml' % (i), encoding="UTF-8")

问题是我不知道如何专门获取测试用例并将它们复制到另一个文件...

实际上,root.findall('Testcase') 将 return 一个包含 "Testcase" 个子元素的列表。 那么需要做的是:

  1. 创建根目录
  2. 添加子元素到根。

示例如下:

>>> tcs = root.findall('Testcase')
>>> tcs
[<Element 'Testcase' at 0x23e14e0>, <Element 'Testcase' at 0x23e1828>]
>>> len(tcs)
2
>>> r = ET.Element('Root')
>>> r.append(tcs[0])
>>> ET.tostring(r, 'utf-8')
'<Root><Testcase>\n          <Info1>[]</Info1>\n          <Info2>[]</Info2>\n     </Testcase>\n     </Root>'