在更多的.xml文件中拆分一个大的.xml文件(python)

时间:2015-10-20 08:04:56

标签: python xml xml-parsing lxml

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

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

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

它有超过2000个孩子,我想要做的是解析这个.xml文件并拆分成每个有100个孩子的较小的.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")

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

1 个答案:

答案 0 :(得分:1)

实际上,root.findall('Testcase')将返回“Testcase”子元素的列表。 所以需要做的是:

  1. 创建root
  2. 将子元素添加到root。
  3. 以下是示例:

    >>> 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>'