gpt4 book ai didi

Python:避免使用 LXML 进行 DTD 验证

转载 作者:太空宇宙 更新时间:2023-11-03 14:33:24 24 4
gpt4 key购买 nike

我正在以 SGML 格式解析 2001 年的 USPTO 专利。在每个文件的顶部,一个外部 DTD被引用。不幸的是,这个 DTD 似乎是无效的。有效性检查确认:

Line 361
Error: A '(' character or an element type is required within declaration of element type "ADR".
<!ELEMENT ADR - - (OMC?,STR*,CITY?,CNTY?,STATE?,CTRY?,PCODE?,EAD*,TEL*,FAX* ...

但是,我不需要验证要处理的 SGML 文件。我只需要 SGML 解析器来识别实体。目前,我正在使用带有 LXML 库的 Python。我按如下方式调用 XMLParser:

parser = etree.XMLParser(target=SimpleXMLHandler(), resolve_entities=False, load_dtd=dtd, dtd_validation=False, recover=True)  

但是,我仍然立即在第 361 行收到外部 DTD 无效的错误。我如何才能避免该问题?我不是DTD的实现者,所以我不愿意修复它。

问候!

最佳答案

正如 Chrono Kitsune 已经指出的:问题在于 xml 与 sgml:DTD 不是正确的 xml dtd,因为它是 sgml dtd。

我建议首先将 sgml 文档转换为 xml,例如使用 sx .

关于Python:避免使用 LXML 进行 DTD 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6572556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com