KXmlParser lanza la excepción de "token inesperado" al inicio de la transmisión RSS
Estoy tratando de analizar una fuente RSS de Monster en Android v.17 usando esta URL:
http://rss.jobsearch.monster.com/rssquery.ashx?q=java
Para obtener el contenido, estoy usando HttpUrlConnection de la siguiente manera
this.conn = (HttpURLConnection) url.openConnection();
this.conn.setConnectTimeout(5000);
this.conn.setReadTimeout(10000);
this.conn.setUseCaches(true);
conn.addRequestProperty("Content-Type", "text/xml; charset=utf-8");
is = new InputStreamReader(url.openStream());
Lo que regresa es lo que puedo decir (y también lo verifiqué) un RSS legítimo
Cache-Control:private
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:5958
Content-Type:text/xml
Date:Wed, 06 Mar 2013 17:15:20 GMT
P3P:CP=CAO DSP COR CURa ADMa DEVa IVAo IVDo CONo HISa TELo PSAo PSDo DELa PUBi BUS LEG PHY ONL UNI PUR COM NAV INT DEM CNT STA HEA PRE GOV OTC
Server:Microsoft-IIS/7.5
Vary:Accept-Encoding
X-AspNet-Version:2.0.50727
X-Powered-By:ASP.NET
Comienza así (haga clic en la URL anterior si desea ver XML completo):
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Monster Job Search Results java</title>
<description>RSS Feed for Monster Job Search</description>
<link>http://rss.jobsearch.monster.com/rssquery.ashx?q=java</link>
Pero cuando intento analizarlo:
final XmlPullParser xpp = getPullParser();
xpp.setInput(is);
for (int type = xpp.getEventType(); type != XmlPullParser.END_DOCUMENT; type = xpp.next()) { /* pasing goes here */ }
El código se ahoga de inmediatotype = xpp.next()
con la siguiente excepción
03-06 09:27:27.796: E/AbsXmlResultParser(13363): org.xmlpull.v1.XmlPullParserException:
Unexpected token (position:TEXT @1:2 in java.io.InputStreamReader@414b4538)
Lo que en realidad significa que no se puede procesar 2ª char en la línea 1<?xml version="1.0" encoding="utf-8"?>
Aquí están las líneas ofensivas en KXmlParser.java (425-426). El tipo == TEXTO evalúa atrue
if (depth == 0 && (type == ENTITY_REF || type == TEXT || type == CDSECT)) {
throw new XmlPullParserException("Unexpected token", this, null);
}
¿Alguna ayuda? Intenté poner el analizador enXmlPullParser.FEATURE_PROCESS_DOCDECL = false
pero eso no ayudó
Investigué esto en la web y aquí y no puedo encontrar nada que ayude