# XPATH und RSS (Problem namespaces)



## menke (15. Mai 2005)

Hallo,

ich mache gerade meine ersten Schritte mit XML und JDOM.. nun versuche ich einen RSS Feed auszulesen bekomme aber eine null pointer Exception bei meinem XPath Query.
Habe vorher schon eine Klasse geschrieben, welche eine XML Datei ohne namespaces ausgelesen hat, und da hat das einwandfrei geklapt...

*Hier ist mein Code:*

```
/*
package rssserver;

import org.jdom.Document;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;


import org.jaxen.jdom.JDOMXPath;
import org.jdom.input.*;
import org.jdom.xpath.*;
import org.jdom.*;
import java.util.*;

public class Main {
    
    public Main() {
    }
    
    public static void main(String[] args) {
        try{
            SAXBuilder builder = new SAXBuilder();
            Document doc = builder.build("test.xml");
            Element ver = doc.getRootElement();
            System.err.println ("1.0");
            int i = 0;
            boolean aktiv = true;
            while (aktiv==true)
            {
                try
                {
                        i++;
                        Object title = XPath.selectSingleNode(doc,"/rdf:RDF/item[1]/link");
                        System.err.println("Titel:"+i+" "+((Element)title).getName());
                        Object link = XPath.selectSingleNode(doc,"rdf/item["+i+"]/link");
                        System.err.println("Link:"+i+" "+((Element)link).getText());
                        Object description = XPath.selectSingleNode(doc,"rdf/item["+i+"]/description");
                        System.err.println("Inhalt:"+i+" "+((Element)description).getText());
                        System.err.println ("_--------------------------------------------------_");
                }catch (Exception e)
                {
                        System.err.println(e.getMessage());
                        e.printStackTrace();
                        aktiv = false;
                }
            }
        }catch (Exception e)
        {
            System.err.println("Exception");
            e.printStackTrace();
        }
    }
    
}
```

Die XML datei, welche ich auslesen möchte, habe ich mit von hier geholt: XML Datei

Über Hilfe wäre ich sehr dankbar!

Danke schonmal

Christoph


----------



## clemson (15. Mai 2005)

ich weiss nicht ob es das ist, aber probier mal die abfrage

"//rdf:RDF/item[1]/link" bzw. "//rdf/item["+i+"]/description"


----------



## menke (15. Mai 2005)

hat leider nicht funktioniert.. liefert immer noch den wert null zurück.. 

trotzdem danke!


----------



## clemson (15. Mai 2005)

folgender fehler:

bei deinen namespace deklarationen im wurzelelement läuft was schief. wenn du dir das xml file in einem editor ansiehst, dann sieht du in der ersten zeile:


```
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
```

und die musst du ändern in:


```
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
```

dann gehts (bei mir jedenfalls...).

eine abfage wie etwa "/rdf:RDF/item[1]/description" funktioniert dann..


----------



## menke (15. Mai 2005)

Die Beispiele (die xml datei) habe ich von : http://www.xml.com/pub/a/2004/04/07/dive.html

Und ich gehe mal stark davon aus das das valid ist und daher ist die möglichkeit nicht gegeben.. 

Aber danke für die Mühe!


----------



## menke (16. Mai 2005)

Habs jetzt ohne XPath gemacht und die einfachen JDOM dateien genommen.. dabei gab es dann zwar Probleme mit den RSS 0.92 Dateien aber das habe ich dann über die XPath methode gelöst..

Fazit: Ich kann alle RSS Feeds die ich bis jetzt ausprobiert habe auslesen.

Falls jemand interesse am Code hat einfach mal melden hier.. dann stelle ich meine Klassen Online. Ist nicht allzuviel Code.

Danke für die Hilfe (auch die Leute im Chat)  :applaus:


----------



## clemson (16. Mai 2005)

menke hat gesagt.:
			
		

> Und ich gehe mal stark davon aus das das valid ist und daher ist die möglichkeit nicht gegeben..



alos ich hab die datei aus dem internet mit dem xpath explorer plugin für eclipse ausprobiert, und da ist das so gewesen, dann, sobal ich das erste element korrigiert habe, die xpath abfragen gegangen sind...

hast dus bei dir auch ausprobiert?

was ist wenn du eine andere datei verwendest? gehts dann auch nicht?


----------



## menke (16. Mai 2005)

das ging mit den anderen dateien, die ich ausprobiert habe (aus dem beispiel von der xml seite) und mit der datei http://amano7.org/poly/main/rss.php jeweil nicht. Und die Probleme waren bei allen Dateien vorhanden.

Ansonsten habe ich keine anderen Beispiele benutzt, weil beide dateien laut validator richtig sind und leider nicht funktionierten :-(


----------

