Получение документа как нулевого [#document: null] После синтаксического анализа XML в Java с помощью DocumentBuilder - PullRequest
8 голосов
/ 17 апреля 2011

После анализа документа я получаю нулевое значение, даже если документ содержит данные.Вот мой код, я установил все проверки на ложь.

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]

Почему?Мне не хватает подтверждения?

Ответы [ 2 ]

14 голосов
/ 18 апреля 2011

[#document: null] - это просто toString вашего doc экземпляра, он не выводит весь ваш XML-документ.

Сам экземпляр не нулевой, вы, вероятно, можете продолжить обработку без проблем.

0 голосов
/ 30 ноября 2012

Вы должны добавить модификатор static к вашему объекту Document, у меня возникла та же проблема, и после действия синтаксического анализа все нестатические объекты просто ссылались на null.Создание статического кода заставляет java сохранять ссылку на созданный объект во время действия parse в вашей переменной.

...