由于XML文件中的空格而导致解析Feed时出错

时间:2017-06-15 13:43:15

标签: java android xml rss

在我的应用的一部分中,我使用此代码来阅读RSS源:

        DocumentBuilder builder = factory.newDocumentBuilder();
        Document dom = builder.parse(this.url.openConnection().getInputStream());
        Element root = dom.getDocumentElement();
        NodeList items = root.getElementsByTagName("item");
        for (int i=0;i<items.getLength();i++){...

问题是我要阅读的其中一个Feed在<?xml之前的空白处开始就像那样

 <?xml version="1.0" encoding="utf-8"?>
<!-- generator="Joomla! - Open Source Content Management" -->
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

当我的应用尝试阅读此Feed时,会抛出以下错误:

  

org.xml.sax.SAXParseException:处理指令不能以xml开头(位置:java.io.InputStreamReader@605667c中的unknown @ 1:2)

现在我的疑问是:我怎样才能避免这个错误?

感谢。

1 个答案:

答案 0 :(得分:0)

如果您确定响应结构,可以使用InputStream的skip()方法。在下面找到代码段。

Document dom = builder.parse(this.url.openConnection().getInputStream().skip(1));
Element root = dom.getDocumentElement();

否则将InputStream转换为String。您可以使用Apache IOUtils。 处理String然后解析xml。