在文档解析中忽略 DTD 引用
使用 DTD 引用解析 XML 文件时,可能会因 DTD 文件丢失或无法访问而遇到错误。要在忽略 DTD 引用的同时绕过这些错误,需要修改 DocumentBuilderFactory 设置。
在 getDoc() 方法中,实例化 DocumentBuilderFactory 并配置其功能,如下所示:
<code class="java">DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // Ignore DTD references dbf.setValidating(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); // Additional settings dbf.setNamespaceAware(true); dbf.setFeature("http://xml.org/sax/features/namespaces", false); DocumentBuilder db = dbf.newDocumentBuilder(); ...</code>
通过禁用验证并禁止加载外部 DTD,DocumentBuilder 将在解析期间跳过 DTD 引用。这允许在不依赖 DTD 的可用性的情况下处理 XML 文件。
有关特定于解析器实现的自定义选项的更多详细信息,请参阅 Xerces2 文档。
以上是如何在 Java 中 XML 解析期间禁用 DTD 引用?的详细内容。更多信息请关注PHP中文网其他相关文章!