DocumentBuilder.parse(InputStream)返回null

我正在修复有关DocumentBuilder.parse的现有代码的错误。我有以下代码:

 String theOutput;

theOutput = response.encodeURL(prefix + "/include/sampleForConversion.jsp?" + request.getQueryString();

StreamSource xmlSource = new StreamSource(new URL(theOutput).openStream(), "http://sampleApps.net/static/dataDef1.1.dtd");

Document xmlDoc = dBuilder.parse(xmlSource.getInputStream());

我不明白为什么我得到xmlDoc的空值,尽管我具有Output和xmlSource变量的有效值。请帮忙。

谢谢!

回答:

流很可能已经正确解析,仅因为 xmlDoc.toString()它将始终是"[#document:

null]"。这并不表示DOM树为空。请首先检查文档中是否有某些节点(子节点)。

如果DOM确实是空的,那么我首先将输入流的内容打印到控制台(可能xmlSource.getInputStream().toString()已经返回了内容),以检查内容格式是否正确,请再次检查dtd文件是否可访问(浏览器)

),最后将XML文档和dtd转储到文件中,以检查XML内容是否有效。

嗯,等等,我以为第二个参数是DTD文件的URI,但是字符串是xml文档(public StreamSource(InputStream

inputStream, String systemId))的systemId 。也许是个问题-

StreamSource类将使用此URI来解析相对URI(例如DTD)。

以上是 DocumentBuilder.parse(InputStream)返回null 的全部内容, 来源链接: utcz.com/qa/422139.html

回到顶部