簡體   English   中英

Python:避免使用 LXML 進行 DTD 驗證

[英]Python: Avoid DTD validation with LXML

我正在以 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 解析器來了解實體。 目前,我正在使用 Python 和 LXML 庫。 我將 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM