将文档获取为null [#document:null]使用DocumentBuilder在Java中解析XML之后

|| 解析文档后,即使文档包含数据,我也将得到null。 这是我的代码,我将所有验证都设置为false。
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();

    domFactory.setNamespaceAware(false); // never forget this!
    domFactory.setCoalescing(false);
    domFactory.setValidating(false);
    domFactory.setFeature(\"http://xml.org/sax/features/namespaces\", false);
    domFactory.setFeature(\"http://xml.org/sax/features/validation\", false);
    domFactory.setFeature(\"http://apache.org/xml/features/nonvalidating/load-dtd-grammar\", false);
    domFactory.setFeature(\"http://apache.org/xml/features/nonvalidating/load-external-dtd\", false);
    domFactory.setFeature(\"http://apache.org/xml/features/allow-java-encodings\",
                       true);



    DocumentBuilder builder = domFactory.newDocumentBuilder();

    builder.setEntityResolver(new EntityResolver() {
        public InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId)
                throws SAXException, java.io.IOException {
            if (publicId.equals(\"--myDTDpublicID--\"))
                // this deactivates the open office DTD
                return new InputSource(new ByteArrayInputStream(\"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\".getBytes()));
            else return null;
        }
    });


    Document doc = null;
    URL url = new URL(urlStr);
    URLConnection urlc = url.openConnection();



    doc = builder.parse(urlc.getInputStream());
    System.out.println(\"doc:\" + doc.toString());
响应如下:
doc:[#document: null]
为什么? 我是否缺少一些验证?     
已邀请:
[#document: null]
只是
doc
实例的toString,它不会输出整个XML文档。 实例本身不为null,您可以毫无问题地继续进行处理。     
您应该将static修饰符添加到Document对象中,我遇到了同样的问题,并且在执行解析操作之后,所有非静态对象都只是引用了null。将其设置为静态会强制Java在变量的解析操作期间保留对创建对象的引用。     

要回复问题请先登录注册