当前位置: 首页 > 面试题库 >

DocumentBuilder.parse(InputStream)返回null

陆展
2023-03-14
问题内容

我正在修复有关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)。



 类似资料:
  • 问题内容: 这是获取NullPointerException错误的代码: 可能出什么问题了? *编辑:printStackTrace 编辑2:编写代码,直到出现例外: 问题答案: 好,我知道了。我必须将主要活动的上下文传递给此类,然后使用 对于有相同问题的任何人,请执行以下操作:将其放在具有活动的类的onCreate函数中: 将上下文传递给新类的函数(在我的示例中为“ process(String

  • 问题内容: 我正在尝试编写一个函数,该函数接受带压缩文件的数据,并返回另一个带解压缩数据的数据。 压缩文件将只包含一个文件,因此不需要创建目录等。 我试着看了看其他人,但是我对Java中这么多不同类型的流感到困惑。 问题答案: 概念 GZIPInputStream用于压缩为gzip(扩展名为“ .gz”)的流(或文件)。它没有任何标题信息。 此类实现流过滤器,以读取GZIP文件格式的压缩数据 如果

  • 在我的主要活动中: 编辑:我在主线程上运行了网络代码,它引发了一个异常。现在为下载创建一个新的线程,它将获得示例PDF(http://www.pdf995.com/samples/PDF.PDF),并将其内容放入文件中。感谢@GreenApps!

  • 如何在SpringBoot项目中从HttpServletRequest获取有效的InputStream?

  • 问题内容: 我没有任何例外,但是当我跑步时… 然后,deckFile.read()返回-1。该文件位于正确的文件夹中,并且不为空。 这应该是世界上最容易的事情。 编辑:AssetManager实际上确实在那里列出“ cards.txt”,所以这不应该是问题。 问题答案: 问题是我的文件太大,并且由于扩展名为“ .txt”而被压缩了。通过将文件重命名为通常已压缩的格式“ .mp3”,就没有问题