首页  >  文章  >  Java  >  如何忽略 DocumentBuilder.parse() 中的 DTD 引用?

如何忽略 DocumentBuilder.parse() 中的 DTD 引用?

DDD
DDD原创
2024-10-31 05:00:02113浏览

How to Ignore DTD References in DocumentBuilder.parse()?

忽略 DocumentBuilder.parse() 中的 DTD 引用

解析包含外部 DTD 引用的 XML 文件时,如果 DTD 引用,则可能会遇到错误不可用。为了避免这些错误并仅专注于解析 XML 内容,请考虑以下解决方案:

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

// Disable validation and related features
dbf.setValidating(false);
dbf.setNamespaceAware(true);
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);

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

通过禁用这些功能,解析器将忽略 DTD 引用并继续解析 XML 内容。

请注意,具体选项可能会因 XML 解析器实现而异。有关禁用 DTD 相关功能的更多信息,请参阅特定解析器的文档。

以上是如何忽略 DocumentBuilder.parse() 中的 DTD 引用?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn