首页 > 解决方案 > 从 URL 读取 XML 数据会引发 SAXParseException:文件过早结束

问题描述

我想通过 url 获取 xml 文档。互联网建议以下代码:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new URL("http://www.reddit.com/r/cats/.xml").openStream());

现在我不知道这些类或库中的任何一个,我绝望地迷失了它抛出的异常:

org.xml.sax.SAXParseException;行号:1;列号:1;文件过早结束。
在 java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl 的 java.xml/com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:261)
。解析(DocumentBuilderImpl.java:339)
在 java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:122)

我读到这个异常可以通过在某个时候重置生成的 InputStream 来避免,但是异常出现在一个方法中,所以我不太明白应该如何实现。另外,这个 DocumentBuilder 不应该自动等待那个缓冲区吗?

无论如何,重点是:由于我在 5 个不同的网站上找到了这个确切的代码,我认为它应该在正常情况下工作。

问题:这个异常的原因可能是什么,更重要的是:如何摆脱它?

标签: javaxml

解决方案


推荐阅读