我正试图解析一个用python从网络接收的大型xml文件。
为此,我获取数据并将其传递给lxml.etree.iterparse
但是,如果XML尚未完全发送,则如下所示:

<MyXML>
    <MyNode foo="bar">
    <MyNode foo="ba

如果我运行etree.iterparse(f, tag='MyNode').next()我会得到一个XMLSyntaxError在任何时候被切断。
有什么方法可以让我接收到第一个标记(即第一个mynode)并且只有当我到达文档的那一部分时才会得到异常吗?(使lxml真正“流式”地“传输”内容,而不是从头读整个内容)。

最佳答案

XMLPullParserHTMLPullParser可以更好地满足您的需求。他们通过反复调用parser.feed(data)来获取数据。在树可用之前,您仍然需要等待所有数据进入。

10-08 12:57