对于Python,什么是好的XML流解析器? [关闭]

问题描述 投票:9回答:3

是否有用于Python的XML解析器可以解析文件流?我的XML文件太大,无法容纳在内存中,因此我需要解析流。

理想情况下,我不必具有root用户权限才能安装东西,因此lxml不是一个很好的选择。

我一直在使用xml.etree.ElementTree,但一直使用I am convinced it is broken

python xml parsing stream
3个回答
3
投票

使用xml.etree.cElementTree。它比xml.etree.ElementTree快得多。他们都没有坏。您的文件已损坏(请参阅我对其他问题的回答)。


14
投票

这里是关于good answer在大型XML文件上的练习的xml.etree.ElementTree.iterparsexml.etree.ElementTree.iterparse也有该方法。用lxml进行流解析的关键是手动清除和删除已处理的节点,否则将导致内存用完。

另一个选择是使用iterparse。官方手册对我来说太正式了,并且缺少示例,因此需要对问题进行说明。默认解析器模块xml.sax实现增量解析接口xml.sax。也就是说xml.sax.expatreader提供了合适的流解析器。

例如,给定一个XML流,例如:

xml.sax.xmlreader.IncrementalParser

可以通过以下方式处理。

xml.sax.make_parser()

8
投票

您是否正在寻找<?xml version="1.0" encoding="utf-8"?> <root> <entry><a>value 0</a><b foo='bar' /></entry> <entry><a>value 1</a><b foo='baz' /></entry> <entry><a>value 2</a><b foo='quz' /></entry> ... </root> ?就在标准库中。

© www.soinside.com 2019 - 2024. All rights reserved.