我正在尝试用 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)
来获取数据。在树可用之前,您仍然必须等到所有数据都进来。
关于python - 使用 python lxml 解析部分 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27571623/