python - 使用 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)
解决方案
我认为您应该更改将大 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>
推荐阅读
- bash - 计算 bash 中的目录和文件
- swift - 如何使用协议将数据从视图控制器传递到其中的容器?
- matlab - While 和 If 循环 - 满足条件时返回两个结果
- php - DeviantArt 中的用户身份验证
- python - matplotlib.pyplot:绘图后共享轴的 x 轴不会将它们放在相同的 x 轴范围内
- python - 如何使用 Keras.to_Categorical 在 dataFrame 中一次对多个列进行 One-Hot 编码?
- html - IE 抓取 VBA 代码,例如航班信息搜索
- git - 对分叉仓库的新拉取请求显示已通过旧拉取请求合并的旧传出提交
- javascript - 服务器不呈现 ejs 文件
- html - position:sticky div 不粘在屏幕底部