gpt4 book ai didi

java - 使 DocumentBuilder.parse 忽略 DTD 引用

转载 作者:IT老高 更新时间:2023-10-28 11:47:44 26 4
gpt4 key购买 nike

当我在这个方法中解析我的 xml 文件(变量 f)时,我得到一个错误

C:\Documents and Settings\joe\Desktop\aicpcudev\OnlineModule\map.dtd (The system cannot find the path specified)

我知道我没有 dtd,也不需要它。如何在忽略 DTD 引用错误的情况下将此 File 对象解析为 Document 对象?

private static Document getDoc(File f, String docId) throws Exception{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(f);


return doc;
}

最佳答案

尝试在 DocumentBuilderFactory 上设置功能:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

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();
...

最终,我认为这些选项是特定于解析器实现的。 Here is some documentation for Xerces2如果有帮助的话。

关于java - 使 DocumentBuilder.parse 忽略 DTD 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/155101/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com