【发布时间】:2018-02-04 04:22:47
【问题描述】:
我有一种方法可以从不同的 url 解析 RSS 并且效果很好:
但是在其中一个 url (https://www.cio.com/category/mobile/index.rss) 和该网站的所有 RSS 中,当我执行代码时,控制台会显示以下错误,而解析器不会作品:
org.xml.sax.SAXParseException;行号:1;列号:1;文件过早结束。
我正在使用此方法(代码的一部分)解析 RSS 提要:
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
URL url = new URL("https://www.cio.com/category/mobile/index.rss");
URLConnection urlConnection = url.openConnection();
InputStream inputStream = urlConnection.getInputStream();
Document doc = dBuilder.parse(inputStream);
错误发生在最后一行 -> Document doc = dBuilder.parse(inputStream);
在该代码中,我从 url 解析 RSS,奇怪的是,当我直接从文件 (index.rss) 解析 RSS 时,我没有错误并且解析效果很好,我这样做是使用:
File fXmlFile = new File("index.rss");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(inputStream);
doc.getDocumentElement().normalize();
注意:
- 这是一个 maven webapp 项目。
- 部署在 Tomcat 9.0 服务器中。
- 当我在 Web 主页中按下按钮时运行该方法。
我提到这是因为当我在一个简单的 java 项目中尝试时,解析器也可以与 inputStream 一起正常工作。
如果您能帮我解决这个问题,我将不胜感激,谢谢!
【问题讨论】:
标签: java xml parsing inputstream domparser