我正试图解析一个用python从网络接收的大型xml文件。
为此,我获取数据并将其传递给lxml.etree.iterparse
但是,如果XML尚未完全发送,则如下所示:
<MyXML>
<MyNode foo="bar">
<MyNode foo="ba
如果我运行
etree.iterparse(f, tag='MyNode').next()
我会得到一个XMLSyntaxError
在任何时候被切断。有什么方法可以让我接收到第一个标记(即第一个mynode)并且只有当我到达文档的那一部分时才会得到异常吗?(使lxml真正“流式”地“传输”内容,而不是从头读整个内容)。
最佳答案
XMLPullParser和HTMLPullParser可以更好地满足您的需求。他们通过反复调用parser.feed(data)
来获取数据。在树可用之前,您仍然需要等待所有数据进入。