在我的应用的一部分中,我使用此代码来阅读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)
现在我的疑问是:我怎样才能避免这个错误?
感谢。
答案 0 :(得分:0)
如果您确定响应结构,可以使用InputStream的skip()方法。在下面找到代码段。
Document dom = builder.parse(this.url.openConnection().getInputStream().skip(1));
Element root = dom.getDocumentElement();
否则将InputStream转换为String。您可以使用Apache IOUtils。 处理String然后解析xml。