通过lxml.etree.iterparse解析单个文件中的多个XML声明

通过lxml.etree.iterparse解析单个文件中的多个XML声明,第1张

通过lxml.etree.iterparse解析单个文件中的多个XML声明

您提供的样本数据提出了一个问题,而您提供的问题和例外提出了另一个问题。您是否将多个XML文档串联在一起,每个文档都有自己的XML声明,或者您是否具有包含多个顶级元素的XML片段?

如果是前者,那么解决方案将涉及将输入流分成多个流,并分别解析每个流。正如一个评论所暗示的,这并不一定意味着实现XML解析器。您可以在字符串中搜索XML声明,而不必解析字符串中的任何其他内容,只要您的输入不包括包含未转义XML声明的CDATA部分。您可以编写类似文件的对象,该对象从基础流返回字符,直到命中XML声明为止,然后将其包装在生成器函数中,该函数将不断返回流,直到到达EOF。这不是小事,但也不是那么困难。

如果您有一个包含多个顶级元素的XML片段,则可以将它们包装为一个XML元素并解析整个内容。

当然,与涉及不良XML输入的大多数问题一样,最简单的解决方案可能只是修复产生不良输入的问题。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5646320.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存