首頁  >  文章  >  Java  >  如何在 Java 中解析 XML 檔案並忽略外部 DTD 參考?

如何在 Java 中解析 XML 檔案並忽略外部 DTD 參考?

Linda Hamilton
Linda Hamilton原創
2024-10-28 21:28:31492瀏覽

How to Parse XML Files Ignoring External DTD References in Java?

忽略DocumentBuilder.parse 中的DTD 引用

解析引用外部DTD(文件類型定義)的XML 檔案時,您可能會遇到如果DTD 不可用或您不希望對其進行驗證,則會出現錯誤。要在忽略DTD 引用的情況下解析文件,請按照以下步驟操作:

解決方案:

配置DocumentBuilderFactory 以禁用DTD 驗證:

<code class="java">DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

// Disable validation
dbf.setValidating(false);

// Disable namespace awareness (optional)
dbf.setNamespaceAware(false);

// Disable specific features that load DTDs
dbf.setFeature("http://xml.org/sax/features/namespaces", false);
dbf.setFeature("http://xml.org/sax/features/validation", false);
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);</code>

設定DocumentBuilderFactory 後,您可以繼續建立DocumentBuilder 並解析檔案:

<code class="java">DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(f);</code>

透過停用DTD 驗證和相關功能,解析器將忽略外部DTD 的參考並繼續解析XML 檔案不會引發錯誤。需要注意的是,該解決方案可能不適合所有場景,例如當您依賴 DTD 進行資料驗證時。

以上是如何在 Java 中解析 XML 檔案並忽略外部 DTD 參考?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn