2010-01-05 6 views
7

Voglio creare un'app che (tra le altre cose) possa analizzare i feed caricati tramite la rete. Dato che le librerie standard di Android + Core Java non forniscono un servizio di parser di feed e non voglio scriverne uno da solo, puoi nominare un parser di feed Java che funzioni su un dispositivo Android con specifiche basse.Qual è la libreria di feed-parsing più diffusa per Android

Sto solo agli inizi di apprendimento Android, dopo aver completato gli esempi Ciao Mondo che vorrei passare la mia prima applicazione. Voglio fare qualcosa che analizzi alcuni feed di ATOM o RSS e mostri alcuni contenuti in un GridView.

L'interfaccia utente sembra essere molto ben documentata in Android, e Sun ha un sacco di esempi su come recuperare un URL, tuttavia non sono così come fare l'analisi dei feed.

In precedenza, quando ho eseguito questo tipo di operazioni in Pythion, utilizzo un parser di feed generico che può analizzare praticamente qualsiasi cosa (ad esempio RSS, ATOM). Ci sono molte buone implementazioni Python di questo genere di cose, tuttavia non ho trovato nulla di simile come parte della libreria standard di Android.

Al lavoro ho svolto attività di manutenzione (leggera) su app Java aziendali. La pratica generale sembra essere quella di prendere tutte le classi che ti piacciono (ad esempio il feed-parser di Jakarta Commons) e semplicemente raggrupparle nel CLASSPATH. Le app desktop non si preoccupano di quanto siano grandi le dipendenze, tuttavia sono sicuro che si tratta di un grosso problema durante la compilazione di un bundle APK da utilizzare su un dispositivo con un meory limitato. Sicuramente devo essere molto esigente su quale tipo di giare dipendo, giusto? Posso andare avanti e utilizzare le stesse classi che utilizzerei per le app desktop?

Note:

  • Il mio background è in Python (con la sola esperienza Java luce)
  • Idealmente mi piacerebbe usare qualcosa popolare (non neccecarily il migliore) in modo da posso ottenere il supporto su di esso.
  • Ancora meglio, mi piacerebbe utilizzare la funzionalità di libreria incorporata, quindi non devo aggiungere nessun barattolo di terze parti per gonfiare la mia app.
  • Attualmente mira Android 1.5 (perché questo è quello che il mio dispositivo funziona)

risposta

2

Rome sembra essere uno dei più popolari librerie Java RSS. Immagino che possa essere usato anche su Android.

+1

Ho letto che Roma richiede JavaBeans che non è un componente sulla piattaforma Android. Probabilmente non è un'opzione. –

+1

Ricordo di aver visto un progetto per Android RSS basato su Roma. Era inattivo, però. Quindi, prova Roma, non ci vorrà molto per capire se funziona o meno. Ad ogni modo, cerca StackOverflow per saperne di più su questo argomento: ci sono molti risultati. – Bozho

+0

ClassLoader non è supportato da Android DalvikVM, viene utilizzato nell'API ROME. – lemotdit

3

Dal feed RSS/Atom sono essenzialmente documenti XML è possibile utilizzare SAXParser, che fa parte delle librerie standard di Java incluso in Android.

+2

Sì, potrei farlo, ma preferirei non reinventare la ruota. Sicuramente molti sviluppatori (molto più alti di me) hanno già creato perfetti parser di feed. Se stavo sviluppando per il desktop non avrei mai mandato in codice un parser di feed da SAX, sarebbe probabilmente spazzatura data la mia mancanza di tempo. Posso fare qualcosa di simile per Android? –

+0

Utilizzare una libreria di terze parti o reinventare la ruota. Dato che hai detto che non vuoi raggruppare i vasi di terze parti con la tua app, usare SAX sarebbe la strada migliore. Se si desidera utilizzare altre librerie RSS, andrei con il suggerimento di Bozho di usare Roma. –

+0

Chiarimento, voglio minimizzare dipendenze aggiuntive, poiché causano ingigantire, tuttavia è probabilmente meglio aggiungere un po 'di grasso e renderlo migliore di passare la maggior parte del mio tempo ad implementare roba di base/noioso come i parser dei feed. Vedere il mio commento qui sotto Roma –

0

È abbastanza semplice impostare un'implementazione di un parser SAX ma la parte difficile è essere in grado di analizzare ogni feed sotto il sole.

È necessario soddisfare tutti i formati RSS 1, RSS 2, Atom ecc. Anche in questo caso si dovrà fare i conti con feed formattati male.

Ho avuto problemi simili in passato, quindi ho deciso di eseguire il parsing su un server e di ottenere il contenuto analizzato. Ciò mi consente di eseguire librerie e parser più complessi che posso modificare senza dover inviare aggiornamenti per la mia app.

Ho il seguente servizio in esecuzione su AppEngine che consente un parsing XML/JSON molto più semplice alla tua estremità. C'è una struttura fissa e semplice alla risposta.È possibile utilizzare questo per il parsing

http://evecal.appspot.com/feedParser

È possibile inviare sia POST e GET richieste con i seguenti parametri.

feedLink: l'URL della risposta di feed RSS: JSON o XML come formato di risposta

Esempi:

Per una richiesta POST

ricciolo --data-urlencode "feedLink = http: //feeds.bbci.co.uk/news/world/rss.xml risposta" --data-urlencode "= json" http://evecal.appspot.com/feedParser

Per richiesta GET

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

La mia app per Android "NewsSpeak" utilizza anche questo.

0

Controllare leggere librerie Android per leggere parti di feed RSS 2.0 in https://github.com/ahorn/android-rss. Non so se è la libreria più popolare per Android, ma mi sembra soddisfacente. Non l'ho ancora provato.

+0

Solo un suggerimento, ma sospetto che una piccola narrativa per inserire questo link nel contesto sarebbe senza dubbio molto apprezzata. Ad esempio, è solo qualcosa che usi? Qualcosa che sai che la stragrande maggioranza delle persone usa e/o è la soluzione più diffusa? Qualunque cosa. – Rob

+1

Mi dispiace, non so se è il più popolare e devo ancora provarlo. Quindi solo il link. Ma finora sembra il migliore e sicuramente ci proverò. – Chloe

0

C'è anche questo nuova libreria RSS ho scritto: https://github.com/Pkmmte/PkRSS

E 'molto leggero, efficiente, veloce, personalizzabile, ed estremamente facile da usare. Ad esempio, il seguente codice carica e analizza il tuo feed RSS in un thread in background:

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

Facile, giusto? Ci sono altri dettagli nella pagina GitHub per questo.

Problemi correlati