【问题标题】:Getting document as null [#document: null] After parsing XML in java using DocumentBuilder使用 DocumentBuilder 在 java 中解析 XML 后获取文档为 null [#document: null]
【发布时间】:2011-08-07 08:47:48
【问题描述】:

解析文档后,我得到了 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]

为什么? 我错过了一些验证吗?

【问题讨论】:

标签: xml null document


【解决方案1】:

[#document: null] 只是您的doc 实例的 toString,它不会输出您的整个 XML 文档。

实例本身不为空,您可能可以继续处理而不会出现问题。

【讨论】:

    【解决方案2】:

    您应该将静态修饰符添加到您的 Document 对象,我遇到了同样的问题,在解析操作之后,所有非静态对象都只是简单地引用 null。以某种方式使其成为静态会强制 java 在变量中的解析操作期间保留对创建对象的引用。

    【讨论】:

      猜你喜欢
      • 2014-01-11
      • 1970-01-01
      • 2017-10-15
      • 1970-01-01
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 2011-09-30
      相关资源
      最近更新 更多