[java] Rss parsen: soms 1 lange regel, soms enters

Pagina: 1
Acties:
  • 171 views sinds 30-01-2008
  • Reageer

  • Sv3n
  • Registratie: Mei 2002
  • Laatst online: 21:50
De topictitel beschrijft heel kort mijn probleem, ik ben voor mij irc botje een rss parser aan het mkane. Nou werkt hij met de tweakers.net feed, nou ging ik een ander proberen(festivalinfo), maar die ging iets minder goed. Het probleem is dat er bij de feed van t.net netjes enters zitten bij elke regel, maar de rss feed van festivalinfo 1 lange regel is.

tweakers.net rss feed: http://tweakers.net/feeds/mixed.xml
Festivalinfo rss feed: http://www.festivalinfo.nl/rss/AllinfoNewsRSS.xml

en dan niet de output van je browers checken maar de source :) Nou heb kan ik natuurlijk 2 aparte parsers schrijven maar dat vind ik niet echt een nette oplossing, ik heb er liever 1 die allebei doet. Ik kan geen idee bedenken waarop dit makkelijk kan.

hier de code zo als die nu is:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
boolean inItem = false;
TempResult t = null;
for (String s : response) {
    System.out.println(s);
    if (s.indexOf("<item>") > 0) { //start of item
        inItem = true;
        t = new TempResult();
    } else if (inItem && (s.indexOf("<title>") > 0)){
        t.setTitle(s.substring(s.indexOf("<title>") + 7, s.indexOf("</title>") - 1));
    } else if (inItem && (s.indexOf("<link>") > 0)){
        t.setLink(s.substring(s.indexOf("<link>") + 6, s.indexOf("</link>") - 1));
    } else if (inItem && (s.indexOf("<description>") > 0)) {
        t.setDescription(s.substring(s.indexOf("<description>") + 13, s.indexOf("</description>") - 1));
    } else if (inItem && (s.indexOf("</item>") > 0)){
        inItem = false;
        System.out.println(t);//debug
        break;
    }
}


Tempresult is een innerclass die tijdelijk de data bevat en response is een linkedlist met alle regels ouput.

Ik hoop dat iemand wel een idee heeft hoe dit netjes op te lossen want ik kom er echt ff niet uit _/-\o_

[ Voor 11% gewijzigd door Sv3n op 06-02-2006 19:31 ]

Last.fm
Films!


  • markvt
  • Registratie: Maart 2001
  • Laatst online: 11-04 12:58

markvt

Peppi Cola

haal bij de ene met wel enters de enters allemaal weg :)

En zover ik zie is hoe jij parsed niet echt de bedoeling van xml..

[ Voor 39% gewijzigd door markvt op 06-02-2006 19:35 ]

van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !


  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

rss is toch xml?

En xml lees je met een dom- of saxparser! Je moet niet met stringetjes gaan lopen pielen hoor!

Siditamentis astuentis pactum.


  • sorted.bits
  • Registratie: Januari 2000
  • Laatst online: 07:30
Toen ik nog geen Xml parsers snapte (vroagah), toen haalde ik ook alle enters tussen eind en begin tags weg. Het is wel belangrijk dat je niet alle enters weghaalt :D.

Maar zoals ook al aangegeven, is er niet een standaard XML parser voor java?

  • Sv3n
  • Registratie: Mei 2002
  • Laatst online: 21:50
Varienaja schreef op maandag 06 februari 2006 @ 19:36:
rss is toch xml?

En xml lees je met een dom- of saxparser! Je moet niet met stringetjes gaan lopen pielen hoor!
toen ik daar eens op googlde kwam ik uit op een standaard java xml parser, denk dat ik het daar maar eens mee ga proberen ;) bedankt :)

Last.fm
Films!


  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Sv3n schreef op maandag 06 februari 2006 @ 19:41:
toen ik daar eens op googlde kwam ik uit op een standaard java xml parser, denk dat ik het daar maar eens mee ga proberen ;) bedankt :)
Als je toch aan het zoeken bent, zoek dan ook even op XPath, daarmee kan je heel eenvoudig een soort query doen op je xml. Dat lijkt me voor het distileren van informatie uit rss wel gemakkelijk.

Siditamentis astuentis pactum.


Verwijderd

Als je het je zelf NOG makkelijker wil maken gebruik je de RSS utils van Sun zelf.
code:
1
2
3
4
5
6
7
8
9
10
11
First download and unzip the package. 
Once you have added rssutils.jar to your classpath, 
create an instance of the RssParser interface using the RssParserFactory. Here is an example:

RssParser parser = RssParserFactory.createDefault();
            Rss rss = parser.parse(new
URL("http://mydomain.com/document.rss"));

The RSS object generated by the parser is a Java object representation of the RSS document found at the provided URL. 
Use the methods provided by the RSS object to get a handle to other RSS objects, such as Channels and Items. 
The RssParser can also parse File objects and InputStream objects.

Veel mooier en makkelijker kan het volgens mij niet. ;)

Zie ook een tutorial website hier:
http://java.sun.com/devel...erverpages/rss_utilities/

Verwijderd

Sv3n schreef op maandag 06 februari 2006 @ 19:31:
Het probleem is dat er bij de feed van t.net netjes enters zitten bij elke regel, maar de rss feed van festivalinfo 1 lange regel is.
Het probleem is dat er bij de feed van t.net enters zitten bij elke regel, maar de rss feed van festivalinfo netjes 1 lange regel is. ;)
Pagina: 1