Autore Topic: Simple Java XML Parser (SJXP): qualcuno lo utilizza?  (Letto 800 volte)

Offline ligio

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: +1
    • Mostra profilo
    • Ligio Blog
  • Dispositivo Android:
    htc wildfire, ZT180 v2
  • Play Store ID:
    Marco Lijoi
  • Sistema operativo:
    Windows Vista
Simple Java XML Parser (SJXP): qualcuno lo utilizza?
« il: 22 Maggio 2011, 19:35:06 CEST »
0
Ciao a tutti!
Vorrei realizzare un'app che sia una sorta di feed RSS Reader e così mi sono imbattuto in questa libreria:
Simple Java XML Parser (SJXP)

Qualcuno di voi l'ha già usata? Io infatti non ho idea di come utilizzarla per effettuare il parsing dell'XML e farmi ritornare un oggetto RSSFeed che sia composto da una lista di RSSItem... (Ho già scritto/trovato le classi RSSFeed ed RSSItem, le allego a questo messaggio)

Ho provato a creare la classe RSSParser che estende la classe XMLParser, ma senza successo!

Vorrei poter utilizzare una funzione che data una URL mi restituisca l'oggetto di tipo RSSFeed.
Qualcosa tipo questa:

Codice (Java): [Seleziona]
//method of RSSFeed class
public static RSSFeed getFeed(String urlToRssFeed)
    {
URL url = new URL(urlToRssFeed);

// RSSParser is a class that extends XMLParser
RSSParser rssParser = new RSSParser();

// rssFeed is now empty: it will be populated while parsing
RSSFeed rssFeed = new RSSFeed();

// parse function will populate rssFeed with RSSItems
rssParser.parse(url.openStream(), rssFeed);
           
return rssFeed;
    }

Vi ringrazio!!!

Offline Daystrom

  • Utente junior
  • **
  • Post: 90
  • Respect: +13
    • Mostra profilo
    • Starfleet
  • Dispositivo Android:
    HTC Magic + HTC Desire HD + Nexus S
  • Play Store ID:
    Daystrom
  • Sistema operativo:
    WXP
Re:Simple Java XML Parser (SJXP): qualcuno lo utilizza?
« Risposta #1 il: 23 Maggio 2011, 00:39:36 CEST »
0
Ciao a tutti!
Vorrei realizzare un'app che sia una sorta di feed RSS Reader e così mi sono imbattuto in questa libreria:
Simple Java XML Parser (SJXP)

Qualcuno di voi l'ha già usata? Io infatti non ho idea di come utilizzarla per effettuare il parsing dell'XML e farmi ritornare un oggetto RSSFeed che sia composto da una lista di RSSItem... (Ho già scritto/trovato le classi RSSFeed ed RSSItem, le allego a questo messaggio)

Prova a leggere questi due tutorial sul forum, il primo utilizza DOM mentre il secondo utilizza SAX:

http://www.anddev.it/index.php?topic=180.0
http://www.anddev.it/index.php/topic,101.0.html

Offline ligio

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: +1
    • Mostra profilo
    • Ligio Blog
  • Dispositivo Android:
    htc wildfire, ZT180 v2
  • Play Store ID:
    Marco Lijoi
  • Sistema operativo:
    Windows Vista
Re:Simple Java XML Parser (SJXP): qualcuno lo utilizza?
« Risposta #2 il: 23 Maggio 2011, 08:26:47 CEST »
0
Ciao Daystrom!
Avevo già provato la soluzione di tipo SAX, ma si sono accorto di un problema.
Avevo utilizzato le classi disponibili nel tutorial IBM: Working with XML on Android e così avevo iniziato a testare il parser su diversi feed RSS. Purtroppo quando mi sono imbattuto nel feed WordPress.com News il parser ha ottenuto dei risultati diversi da quelli che mi aspettavo.
Nel tag <content:encoded> del feed compaiono infatti alcuni link così scritti: <a title="titolo del link" .. > e purtroppo questo title viene interpretato dal parser come titolo dell'item!

Con SJXP invece funziona tutto a meraviglia e soprattutto non ha bisogno di parsare tutto il file XML, ma lavora solo sulle regole che sono state definite, ottimizzando quindi le performance.

Ieri sera ho scritto all'autore della libreria e mi ha aiutato a scrivere la classe che cercavo e che ora condivido con voi del forum (sperando possa servire anche ad altri!).

  • Per prima cosa, bisogna scaricare la libreria SJXP da QUI e aggiungere il JAR tra le librerie del progetto
  • Aggiungere nel proprio progetto le classi che allego a questo messaggio
  • Utilizzare questa funzione per ottenere un oggetto RSSFeed composto da una lista di RSSItem:

Codice (Java): [Seleziona]
String urlToRssFeed = "http://en.blog.wordpress.com/feed/"      //inserire la url del feed che si vuole parsare
RSSFeed rss = RSSFeed.getFeed(urlToRssFeed);


Una volta ottenuto l'oggetto RSSFeed ci sono a disposizione tutti i metodi per ottenere la lista degli oggetti RSSItem e di conseguenza i titoli, descrizioni, pubDate...

Purtroppo non ho tempo per scrivere un tutorial completo con un'app di test poichè sono in partenza per le vacanze, ma spero di aver aiutato qualcuno con queste classi!
« Ultima modifica: 23 Maggio 2011, 08:28:22 CEST da ligio »