【发布时间】:2013-03-29 08:53:24
【问题描述】:
我正在尝试解析 large xml 文件并将标签打印到输出文件。我正在使用 minidom,我的代码对于 30Mb 文件运行良好,但对于较大的文件,它会出现内存错误。所以我使用缓冲读取文件,但现在我无法获得所需的输出。
XML 文件
> <File> <TV>Sony</TV> <FOOD>Burger</FOOD> <PHONE>Apple</PHONE> </File>
> <File> <TV>Samsung</TV> <FOOD>Pizza</FOOD> <PHONE>HTC</PHONE> </File>
> <File> <TV>Bravia</TV> <FOOD>Pasta</FOOD> <PHONE>BlackBerry</PHONE> </File>
期望的输出
索尼、汉堡、苹果
三星、比萨、HTC
Bravia、意大利面、黑莓
当使用缓冲区读取时,它会给我一个输出说:-
索尼、汉堡、苹果
三星、Piz
Bravia、意大利面、黑莓
while 1:
content = File.read(2048)
if not len(content):
break
else:
for lines in StringIO(content):
lines = lines.lstrip(' ')
if lines.startswith("<TV>"):
TV = lines.strip("<TV>")
tvVal = TV.split("</TV>")[0]
#print tvVal
w2.writelines(str(tvVal)+",")
elif lines.startswith("<FOOD>"):
FOOD = lines.strip("<FOOD>")
foodVal = FOOD.split("</FOOD>")[0]
#print foodVal
w2.writelines(str(foodVal)+",")
............................
...........................
我尝试使用 seek(),但仍然无法获得所需的输出。
【问题讨论】:
标签: python xml xml-parsing large-files seek