Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SAX解析器引发UnknownHostException_Java_Dtd_Sax - Fatal编程技术网

Java SAX解析器引发UnknownHostException

Java SAX解析器引发UnknownHostException,java,dtd,sax,Java,Dtd,Sax,我要解析的XML文件以以下内容开头: <!DOCTYPE plist PUBLIC "-//...//DTD PLIST 1.0//EN" "http://www.....dtd"> 您可以实现一个自定义的EntityResolver,它在XML解析期间用于查找外部实体 org.xml.sax.EntityResolver customEntityResolver = new DummyEntityResolver(); javax.xml.parsers.SAXParser pa

我要解析的XML文件以以下内容开头:

<!DOCTYPE plist PUBLIC "-//...//DTD PLIST 1.0//EN" "http://www.....dtd">

您可以实现一个自定义的
EntityResolver
,它在XML解析期间用于查找外部实体

org.xml.sax.EntityResolver customEntityResolver = new DummyEntityResolver();
javax.xml.parsers.SAXParser parser = factory.newSAXParser();
parser.getXMLReader().setEntityResolver(customEntityResolver);
parser.parse(xmlFile, handler);

在自定义EntityResolver中,始终返回null。我认为应该解决这个问题。

您应该提供一个完整的解决方案来解决问题。我建议您编写一个解析器,它将知道如何在本地读取DTD(前提是您的应用程序附带了DTD)。否则,像Gowri建议的那样返回null

你可能想把这本书通读一遍


yc

确定,结果是
parse()
方法使用传递给parse方法的处理程序覆盖任何先前设置的实体解析器。以下代码应该可以工作:

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(""));
        }
    }); 

使用XMLReader而不是SAXParser

    XMLReader reader =XMLReaderFactory.createXMLReader();
 reader.setEntityResolver(new DummyEntityResolver());
    reader.setContentHandler(handler);
 reader.parse(inputSource);
它还应该与SAXParser一起工作,但由于某些原因,它不能工作

    XMLReader reader =XMLReaderFactory.createXMLReader();
 reader.setEntityResolver(new DummyEntityResolver());
    reader.setContentHandler(handler);
 reader.parse(inputSource);