[英]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.