2011-01-07 10 views
0
String url = "http://rads.stackoverflow.com/amzn/click/1402766459"; 

DOMParser parser = new DOMParser(); 
parser.parse(url); 

Document document = parser.getDocument(); 
DOMReader reader = new DOMReader(); 
org.dom4j.Document nhddoc = reader.read(document); 

//book price 
Node price = nhddoc.selectSingleNode("/HTML/BODY/DIV[2]/FORM/TABLE[3]/TBODY/TR/TD/DIV/TABLE/TBODY/TR/TD[2]/B"); 
System.out.println(price.getText().toString().trim()); 

der Fehler i erhalten ist:Nullpointer mit DOMParser und selectSingleNode

Exception in thread "main" java.lang.NullPointerException 
     at nekodom4j.Main.main(Main.java:44) 

ist der Null-Zeiger Ausnahme Mittel wurde kein Knoten ausgewählt?

+4

Eine Sache, die Sie falsch schreiben Fragen zu tun das ist. Dies ist kaum kohärent. –

+0

bei welchem ​​Schritt ist es fehlgeschlagen? –

+0

Wenn es ein DOM4J-Fehler war, hätten Sie eine Ausnahme erhalten. Wenn Sie fragen "Gibt es einen Fehler in DOM4J?", Lautet die nachdrückliche Antwort "Nein". Es ist viel wahrscheinlicher, dass Sie und Ihr Code ein Problem haben. Wenn das Parsen erfolgreich ist, würde ich empfehlen, das DOM-Dokument auszudrucken und es anzuschauen. Ein Bildmaterial sollte Ihnen helfen zu bestätigen, wo Ihre Auswahl falsch gelaufen ist. – duffymo

Antwort

1

Ich habe keine besondere Idee, was die Ursache des Problems sein könnte, aber das erste, was ich tun würde, um es zu debuggen wäre, den Pfad eine Ebene nach der anderen zu gehen und zu sehen, wo es nicht zurückkehrt, was Sie erwarten.

Node html = nhddoc.selectSingleNode("/HTML"); 
/* maybe print out some information about the Node just acquired */ 
Node body = html.selectSingleNode("/BODY"); 

etc ...

+0

mein Fehler: Ich dachte, dass die HTML-Seite von dom4j analysiert wurde identisch mit der in firefox am ursprünglichen Speicherort angezeigt. fix: ich habe die geparste html-seite auf der hdd gespeichert, mit firefox geöffnet und mit firebug erkundet. – SomeEUGuy

+0

entfernt alle Namespaces von HTML-Seite und es funktioniert jetzt gut – SomeEUGuy