Java SAX Parser引发UnknownHostException [英] Java SAX Parser raises UnknownHostException
本文介绍了Java SAX Parser引发UnknownHostException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我要解析的XML文件以:
The XML file I want to parse starts with :
<!DOCTYPE plist PUBLIC "-//...//DTD PLIST 1.0//EN" "http://www.....dtd">
所以当我启动SAX praser时,它会尝试在线访问这个DTD,我得到一个java .net.UnknownHostException。
So when I start the SAX praser, it tries to access this DTD online, and I get a java.net.UnknownHostException.
- 我无法修改XML文件,然后再将其提供给SAX解析器
- 我必须在没有互联网连接的情况下运行
如何更改SAX Parser行为,以便它不会尝试加载DTD?
谢谢。
How can I change the SAX Parser behaviour so that it does not try to load the DTD ? Thanks.
javax.xml.parsers.SAXParserFactory factory = javax.xml.parsers.SAXParserFactory.newInstance();
factory.setValidating(false);
javax.xml.parsers.SAXParser parser = factory.newSAXParser();
parser.parse(xmlFile, handler);
推荐答案
好的,结果 parse()
方法使用传递给parse方法的处理程序覆盖任何以前设置的实体解析器。以下代码应该可以工作:
Ok, turns out the parse()
method overrides any previously set entity resolvers with the handler passed in to the parse method. The following code should work:
javax.xml.parsers.SAXParserFactory factory = javax.xml.parsers.SAXParserFactory.newInstance();
factory.setValidating(false);
javax.xml.parsers.SAXParser parser = factory.newSAXParser();
parser.parse(new java.io.File("x.xml"), new org.xml.sax.helpers.DefaultHandler(){
public org.xml.sax.InputSource resolveEntity(String publicId, String systemId)
throws org.xml.sax.SAXException, java.io.IOException {
System.out.println("Ignoring: " + publicId + ", " + systemId);
return new org.xml.sax.InputSource(new java.io.StringReader(""));
}
});
这篇关于Java SAX Parser引发UnknownHostException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文