【问题标题】:Parsing XML with etree in Python 3在 Python 3 中使用 etree 解析 XML
【发布时间】:2023-02-21 20:53:29
【问题描述】:

我正在尝试使用 etree 解析 XML 文件,使用

tree = etree.parse(path_to_xml)

给我一个错误:

lxml.etree.XMLSyntaxError : CData secton too big found.

所以我试图删除所有 CData 标签,但为了阅读它,我需要解析,这样解决方案就毫无意义了。

删除 CData 标签就可以了,我试过为此使用正则表达式,但这是一个有风险的修复。

此外,我无法共享该文件,因为它是机密文件,但因为我已经与我的同事交谈过,可能是由于 CData 长度导致的错误。 XML 文件大约 30MB,所以它与内存无关,知道吗?谢谢!!

【问题讨论】:

    标签: python python-3.x xml lxml cdata


    【解决方案1】:

    xml2 库似乎有一个限制,默认为 10Mb:Comment in another forum by Gustavo L Fabro 我知道这是一个 python 问题,但两者似乎都使用相同的底层 C 库。

    在定义树解析器时,有一个名为 huge_tree 的选项可能会帮助你:XML Tree parser docs

    您甚至可以在此处查看 C 库中的实际限制:Debian Archive Mail list,在其中搜索“XML_PARSE_HUGE”

    祝你好运!

    【讨论】:

    • 谢谢!!使用 huge_tree 有效!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2015-06-26
    • 2012-02-01
    • 2011-10-29
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    相关资源
    最近更新 更多