首页 > 解决方案 > 使用 xml.etree.ElementTree 获取 XML 行

问题描述

我正在寻找一个参数是 Integer(Line) 并且返回值将 xml-Line 提供给该 Integer 的函数。

我有一个大的 XMl 文件,我想将它减少为一些较小的文件。每个输出文件都有一个开始标签和结束标签

例如

输入文件:Test.xml

输出文件:

Test1.xml Test2.xml Test3.xml Test4.xml

tree = etree.parse(file_name)
root = tree.getroot()

# Here i count the number of XMl Lines in my file
xml_lines = 0

for child in root:
    xml_lines +=1

# Here i want to get the String of my XMl Line by giving the number
for i in range(counter,counter+number_of_each_file):
            d.write(FUNCTION)

标签: pythonxml

解决方案


我认为您应该更改将大 XML 文件拆分为较小 XML 文件的方法。XML 不关心行。它关心元素。您的函数应该获取大 XML 的根、dest_file_name_prefix 和一个表示每个小 XML 文件中所需元素的数字。

就像是:

def split_xml(root,dest_file_name_prefix,num_of_elements):
    """ Loop around the elements under to root and save a each collection of 'num_of_elements' to a file  having a unique  name """
    root = tree.getroot()
    elements = root.findall('.//element')
    counter = 0 
    temp = []
    for idx,element in enumerate(elements)
        temp.append(element)
        if idx > 0 and idx % num_of_elements == 0:
            # save the elements to a 'small' file
            counter += 1
            file_name = '{}_{}'.format(dest_file_name_prefix,counter)
            #TODO I assume you know how to save the elements from temp to a file  
            temp = []

大 XML 示例

<root>
   <element id="0"></element>
   <element id="1"></element>
   <element id="2"></element>
   ...
   <element id="10000"></element>
</root>

推荐阅读