2010-01-05 1027 views
7

Quiero hacer una aplicación que (entre otras cosas) pueda analizar alimentaciones cargadas a través de la red. Dado que las bibliotecas estándar de Android + Core Java no brindan un servicio analizador de fuentes y yo no quiero escribir una, yo puedo nominar un analizador de fuentes Java que funcionará en un dispositivo Android de baja especificación.¿Cuál es la biblioteca de análisis de fuentes más utilizada para Android?

Estoy comenzando a aprender Android, habiendo completado los ejemplos de Hello World me gustaría pasar a mi primera aplicación. Quiero hacer algo que analice algunas fuentes de ATOM o RSS y muestre algo de contenido en una GridView.

Las cosas de la interfaz de usuario parecen estar muy bien documentadas en Android, y Sun tiene muchos ejemplos de cómo recuperar una URL, pero no sé cómo hacer el análisis sintáctico.

Anteriormente cuando hice este tipo de cosas en Pythion utilizo un analizador de fuentes de propósito general que puede analizar prácticamente cualquier cosa (por ejemplo, RSS, ATOM). Hay muchas buenas implementaciones de Python de este tipo de cosas, sin embargo, no he encontrado nada como esto como parte de la biblioteca estándar de Android.

En el trabajo, he realizado mantenimiento (ligero) en aplicaciones corporativas de Java. La práctica general parece ser tomar las clases que desee (por ejemplo, el analizador de feed de Yakarta Commons) y simplemente agruparlas en CLASSPATH. A las aplicaciones de escritorio no les importa cuán grandes sean las dependencias, sin embargo, estoy seguro de que eso es un gran problema al compilar un paquete de APK para usar en un dispositivo con meory limitado. Sin duda, tengo que ser muy exigente con respecto al tipo de frascos en los que dependo, ¿verdad? ¿Puedo seguir adelante y usar las mismas clases que usaría para aplicaciones de escritorio?

Notas:

  • Mi formación es en Python (con sólo la luz experiencia en Java)
  • Idealmente me gustaría usar algo muy popular (no neccecarily el mejor) para que pueda obtener el apoyo en él.
  • Mejor aún, me gustaría utilizar la funcionalidad incorporada de la biblioteca, así que no tengo que agregar tarros de terceros para hinchar mi aplicación.
  • Actualmente focalización Android 1.5 (porque eso es lo que corre mi dispositivo)

Respuesta

2

Rome parece ser una de las bibliotecas RSS java más populares. Supongo que también se puede usar en Android.

+1

He leído que Roma requiere JavaBeans que no es un componente de la plataforma Android. Probablemente no sea una opción. –

+1

Recuerdo haber visto un proyecto para Android RSS que estaba basado en Roma. Sin embargo, estaba inactivo. Así que pruebe Roma, no debería tomar mucho tiempo darse cuenta si funciona o no. De todos modos, busque Stackoverflow para obtener más información sobre este tema: hay muchos resultados. – Bozho

+0

ClassLoader no es compatible con el DalvikVM de Android, que se utiliza en la API de ROM. – lemotdit

3

Desde alimentaciones RSS/Atom son esencialmente documentos XML que puede utilizar SAXParser, que forma parte de las bibliotecas estándar de Java incluido con Android.

+2

Sí, podría hacer esto, pero preferiría no volver a inventar la rueda. Seguramente muchos desarrolladores (mucho más experimentados que yo) ya han creado analizadores de feeds perfectamente buenos. Si estuviese desarrollando para el escritorio, nunca codificaría un analizador de feeds de SAX, probablemente sería una porquería debido a mis limitaciones de tiempo. ¿Puedo hacer algo similar para Android? –

+0

O utilice una biblioteca de terceros o reinvente la rueda. Como dijiste que no querías juntar frascos de terceros con tu aplicación, usar SAX sería la mejor opción. Si quieres usar otras bibliotecas RSS, yo iría con la sugerencia de Bozho de usar Roma. –

+0

Aclaración, quiero minimizar las dependencias adicionales, ya que causan hinchazón, sin embargo, es probable que sea mejor agregar un poco de grasa y hacerlo mejor que pasar la mayor parte del tiempo implementando cosas básicas/aburridas como analizadores de fuentes. Ver mi comentario a continuación en Roma –

0

Es bastante fácil configurar una implementación de un analizador SAX, pero la parte más difícil es poder analizar todas y cada una de las alimentaciones bajo el sol.

Debe atender todos los formatos RSS 1, RSS 2, Atom, etc. Incluso entonces deberá lidiar con alimentaciones mal formateadas.

He tenido problemas similares en el pasado, así que decidí hacer el análisis de mi fuente en un servidor y obtener los contenidos analizados. Esto me permite ejecutar librerías y analizadores más complejos que puedo modificar sin necesidad de actualizar mi aplicación.

Tengo el siguiente servicio ejecutándose en App Engine que permite un análisis mucho más simple de XML/JSON en su extremo. Hay una estructura fija y simple para la respuesta.Puede usar esto para analizar

http://evecal.appspot.com/feedParser

Puede enviar tanto POST y GET solicitudes con los siguientes parámetros.

feedLink: La URL de la respuesta feed RSS: JSON o XML como el formato de respuesta

Ejemplos:

Para una petición POST

rizo --Hojas-urlencode "feedLink = http: //feeds.bbci.co.uk/news/world/rss.xml" --Hojas-urlencode "respuesta = json" http://evecal.appspot.com/feedParser

Por petición GET

evecal. appspot.com/feedParser?feedLink=http://feeds.nytimes.com/nyt/rss/HomePage & response = xml

Mi aplicación para Android "NewsSpeak" usa esto también.

0

Revise la biblioteca ligera de Android para leer partes de feeds RSS 2.0 en https://github.com/ahorn/android-rss. No sé si es la biblioteca más popular para Android, pero me parece bien. Aun no lo he intentado.

+0

Solo una sugerencia, pero sospecho que una pequeña narrativa para poner este enlace en contexto sin duda sería muy apreciada. Por ejemplo, ¿es algo que usas? ¿Algo que usted sabe que la gran mayoría de las personas usa y/o es la solución más prevalente? Lo que sea. – Rob

+1

Lo siento, no sé si es el más popular y todavía no lo he probado. Por lo tanto, solo el enlace. Pero hasta ahora se ve mejor y definitivamente intentaré. – Chloe

0

Se da también una nueva biblioteca RSS escribí: https://github.com/Pkmmte/PkRSS

Es muy ligero, eficiente, rápido, personalizable y muy fácil de usar. Por ejemplo, las siguientes cargas de código y analiza su feed RSS en un subproceso de fondo:

PkRSS.with(this).load(url).async(); 

Fácil, ¿verdad? Hay más detalles en la página de GitHub para él.

Cuestiones relacionadas