java - 从 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 个不同的网站上找到了这个确切的代码,我认为它应该在正常情况下工作。
问题:这个异常的原因可能是什么,更重要的是:如何摆脱它?
解决方案
推荐阅读
- go - 从 GCP 源代码库中获取
- sdk - 在 oEmbed 上使用 Deezer JavaScript SDK 返回 CORB 问题
- vb.net - VB6 到 VB.NET 的转换(语法:打印到 StreamWriter/Reader)?
- c++ - 如何通过用户输入创建数组?
- python - 启动时在 Sanic 中动态加载路由的值
- sql - 数据库设计 - 导入每日文件转储
- angular - 如何将自定义金额和电子邮件值添加到 Paystack
- ios - 当 MacBook 连接到 WLAN 时,IOS 模拟器无法连接到互联网
- rust - 货物发布“清单中没有指定目标”
- go - 未检查 `app.errorLog.Output` 的错误返回值