После анализа документа я получаю нулевое значение, даже если документ содержит данные.Вот мой код, я установил все проверки на ложь.
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] - это просто toString вашего doc экземпляра, он не выводит весь ваш XML-документ.
[#document: null]
doc
Сам экземпляр не нулевой, вы, вероятно, можете продолжить обработку без проблем.
Вы должны добавить модификатор static к вашему объекту Document, у меня возникла та же проблема, и после действия синтаксического анализа все нестатические объекты просто ссылались на null.Создание статического кода заставляет java сохранять ссылку на созданный объект во время действия parse в вашей переменной.