RSS-Datei auslesen von Yahoo Webservice

mavinatic

Bekanntes Mitglied
Hallo Community,

mein Problem ist folgendes ich möchte Yahoo's Wetter Webservice benutzten, soweit so gut. Ich habe mit dem InputStream die RSS/XML-Datei erhalten und mag nun Werte auslesen :) aber komischerweise erhalte ich immer eine NullpointerException?! Ich habe alles durchdebugged und Sysout geprüft alles regulär...ich finds sehr komisch :D könntet ihr mal'n blick drüber werfen?

Java:
public void getRequestData(Element root) {
		
		Element dataElement = root.getChild("channel");
		/* general info */
		title = dataElement.getChild("title").getValue();
		description = dataElement.getChild("description").getValue();
		
		/* location info */
		locationCity = dataElement.getChild("yweather:location").getAttribute("city").getValue();
		System.out.println(locationCity);
		locationRegion = dataElement.getChild("yweather:location").getAttribute("region").getValue();
		locationCountry = dataElement.getChild("yweather:location").getAttribute("country").getValue();
		
		/* unit info */
		unitTemperature = dataElement.getChild("yweather:units").getAttribute("temperature").getValue();
		unitDistance = dataElement.getChild("yweather:units").getAttribute("distance").getValue();
		unitPressure = dataElement.getChild("yweather:units").getAttribute("pressure").getValue();
		unitSpeed = dataElement.getChild("yweather:units").getAttribute("speed").getValue();
		
		/* wind info */
		windChill = dataElement.getChild("yweather:wind").getAttribute("chill").getValue();
		windDirection = dataElement.getChild("yweather:wind").getAttribute("direction").getValue();
		windSpeed = dataElement.getChild("yweather:wind").getAttribute("speed").getValue();
		
		/* atmosphere info */
		atmosphereHumidity = dataElement.getChild("yweather:atmosphere").getAttribute("humidity").getValue();//feuchtigkeit
		atmosphereVisibility = dataElement.getChild("yweather:atmosphere").getAttribute("visibility").getValue();
		atmospherePressure = dataElement.getChild("yweather:atmosphere").getAttribute("pressure").getValue(); 
		atmosphereRising = dataElement.getChild("yweather:atmosphere").getAttribute("rising").getValue();
		
		astronomySunrise = dataElement.getChild("yweather:astronomy").getAttribute("sunrise").getValue();
		astronomySunset = dataElement.getChild("yweather:astronomy").getAttribute("sunset").getValue();
		
		itemGeoLAT = dataElement.getChild("item").getChild("geo:lat").getValue();
		itemGeoLONG = dataElement.getChild("item").getChild("geo:long").getValue();
		itemPubDate = dataElement.getChild("item").getChild("pubDate").getValue();
		
		itemConditionsCode = dataElement.getChild("item").getChild("yweather:condition").getAttribute("code").getValue();
		itemConditionsTemperature = dataElement.getChild("item").getChild("yweather:condition").getAttribute("temp").getValue();
		itemConditionsDate = dataElement.getChild("item").getChild("yweather:condition").getAttribute("date").getValue();
		
//		Element foreCast = dataElement.getChild("item").getChild("yweather:forecast");
	}

Und hier die erhaltene RSS/XML Datei:

[XML]<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<rss version="2.0" xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
<channel>

<title>Yahoo! Weather - Sunnyvale, CA</title>
<link>http://us.rd.yahoo.com/dailynews/rss/weather/Sunnyvale__CA/*http://weather.yahoo.com/forecast/USCA1116_f.html</link>
<description>Yahoo! Weather for Sunnyvale, CA</description>
<language>en-us</language>
<lastBuildDate>Sat, 19 Mar 2011 3:56 pm PDT</lastBuildDate>
<ttl>60</ttl>

<yweather:location city="Sunnyvale" region="CA" country="United States"/>
<yweather:units temperature="F" distance="mi" pressure="in" speed="mph"/>
<yweather:wind chill="51" direction="150" speed="10" />
<yweather:atmosphere humidity="" visibility="7" pressure="29.8" rising="0" />
<yweather:astronomy sunrise="7:12 am" sunset="7:19 pm"/>
<image>
<title>Yahoo! Weather</title>
<width>142</width>
<height>18</height>
<link>http://weather.yahoo.com</link>
<url>http://l.yimg.com/a/i/brand/purplelogo//uh/us/news-wea.gif</url>
</image>

<item>
<title>Conditions for Sunnyvale, CA at 3:56 pm PDT</title>
<geo:lat>37.37</geo:lat>
<geo:long>-122.04</geo:long>
<link>http://us.rd.yahoo.com/dailynews/rss/weather/Sunnyvale__CA/*http://weather.yahoo.com/forecast/USCA1116_f.html</link>
<pubDate>Sat, 19 Mar 2011 3:56 pm PDT</pubDate>
<yweather:condition text="Light Rain" code="11" temp="51" date="Sat, 19 Mar 2011 3:56 pm PDT" />
<description><![CDATA[
<img src="http://l.yimg.com/a/i/us/we/52/11.gif"/><br />
<b>Current Conditions:</b><br />
Light Rain, 51 F<BR />
<BR /><b>Forecast:</b><BR />
Sat - Rain/Wind. High: 53 Low: 50<br />
Sun - Rain. High: 56 Low: 45<br />
<br />
<a href="http://us.rd.yahoo.com/dailynews/rss/weather/Sunnyvale__CA/*http://weather.yahoo.com/forecast/USCA1116_f.html">Full Forecast at Yahoo! Weather</a><BR/><BR/>
(provided by <a href="http://www.weather.com" >The Weather Channel</a>)<br/>
]]></description>
<yweather:forecast day="Sat" date="19 Mar 2011" low="50" high="53" text="Rain/Wind" code="12" />
<yweather:forecast day="Sun" date="20 Mar 2011" low="45" high="56" text="Rain" code="12" />
<guid isPermaLink="false">USCA1116_2011_03_19_15_56_PDT</guid>

</item>
</channel>
</rss>
<!-- api1.weather.ch1.yahoo.com compressed/chunked Sat Mar 19 17:06:19 PDT 2011 -->
[/XML]

Ich find den Fehler nicht... :(
 

eRaaaa

Top Contributor
Java:
dataElement.getChild("yweather:location")

das liefert eben null, weil du das so nicht angeben kannst.
Java:
dataElement.getChild("location", Namespace.getNamespace("http://xml.weather.yahoo.com/ns/rss/1.0"))

probiere es mal so, das musst du dann natürlich überall so machen. Da der Namespace aber für die meisten gleich ist, würde es auch reichen den Namespace einmal zu holen.
Java:
        /*Namespace */
        Namespace ns = Namespace.getNamespace("http://xml.weather.yahoo.com/ns/rss/1.0");
        /* location info */
       String  locationCity = dataElement.getChild("location", ns).getAttribute("city").getValue();
        String  locationRegion = dataElement.getChild("location", ns).getAttribute("region").getValue();
        String  locationCountry = dataElement.getChild("location", ns).getAttribute("country").getValue();
        
        /* unit info */
        String unitTemperature = dataElement.getChild("units" ,ns).getAttribute("temperature").getValue();
        String  unitDistance = dataElement.getChild("units" ,ns).getAttribute("distance").getValue();
        String  unitPressure = dataElement.getChild("units" ,ns).getAttribute("pressure").getValue();
        String  unitSpeed = dataElement.getChild("units" ,ns).getAttribute("speed").getValue();

usw....eben aus allen wo bei dir yweather davor steht, abändern -->
getChild("yweather:wind")
-->
getChild("wind", ns)

;)
 

mavinatic

Bekanntes Mitglied
Was ist eigentlich dieser Namespace?

Ich bin nun beim "Item" Element angelangt und habe dort auch den NAMESPACE eingesetzt, bekomme aber wieder eine nullpointer exception, ich habe via google probiert irgendwas ausfindig zu machen, aber zu dem thema findet man nichts?! Muss ich dort nun nen anderen Namespace einsetzten?

Java:
public void getRequestData(Element root) {
		
		Element dataElement = root.getChild("channel");
		Namespace space = Namespace.getNamespace("http://xml.weather.yahoo.com/ns/rss/1.0");
		/* general info */
		title = dataElement.getChild("title").getValue();
		description = dataElement.getChild("description").getValue();
		
		/* location info */
		locationCity = dataElement.getChild("location", space).getAttribute("city").getValue();
		locationRegion = dataElement.getChild("location", space).getAttribute("region").getValue();
		locationCountry = dataElement.getChild("location", space).getValue();
		
		/* unit info */
		unitTemperature = dataElement.getChild("units", space).getAttribute("temperature").getValue();
		unitDistance = dataElement.getChild("units", space).getAttribute("distance").getValue();
		unitPressure = dataElement.getChild("units", space).getAttribute("pressure").getValue();
		unitSpeed = dataElement.getChild("units", space).getAttribute("speed").getValue();
		
		/* wind info */
		windChill = dataElement.getChild("wind", space).getAttribute("chill").getValue();
		windDirection = dataElement.getChild("wind", space).getAttribute("direction").getValue();
		windSpeed = dataElement.getChild("wind", space).getAttribute("speed").getValue();
		
		/* atmosphere info */
		atmosphereHumidity = dataElement.getChild("atmosphere", space).getAttribute("humidity").getValue();//feuchtigkeit
		atmosphereVisibility = dataElement.getChild("atmosphere", space).getAttribute("visibility").getValue();
		atmospherePressure = dataElement.getChild("atmosphere", space).getAttribute("pressure").getValue(); 
		atmosphereRising = dataElement.getChild("atmosphere", space).getAttribute("rising").getValue();
		
		astronomySunrise = dataElement.getChild("astronomy", space).getAttribute("sunrise").getValue();
		astronomySunset = dataElement.getChild("astronomy", space).getAttribute("sunset").getValue();
		
		itemGeoLAT = dataElement.getChild("item").getValue();//getChild("geo:lat", space).getValue();
		System.out.println(itemGeoLAT);
		itemGeoLONG = dataElement.getChild("item").getChild("geo:long").getValue();
		itemPubDate = dataElement.getChild("item").getChild("pubDate").getValue();
		
		itemConditionsCode = dataElement.getChild("item", space).getChild("yweather:condition").getAttribute("code").getValue();
		itemConditionsTemperature = dataElement.getChild("item").getChild("yweather:condition").getAttribute("temp").getValue();
		itemConditionsDate = dataElement.getChild("item").getChild("yweather:condition").getAttribute("date").getValue();
		
//		Element foreCast = dataElement.getChild("item").getChild("yweather:forecast");
	}

Wäre nett wenn ihr mir helfen könntet.
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
So schwer ist das nicht, du musst nur schauen was eben in deiner XML-Datei steht, siehe
[xml]
<rss version="2.0" xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
[/xml]

Wie du siehst, ist hier geo = http://www.w3.org/2003/01/geo/wgs84_pos#" definiert, d.h. nun wieder, anstelle von
Java:
dataElement.getChild("item").getChild("geo:long").getValue();
schreibst du
Java:
dataElement.getChild("item").getChild("long", Namespace.getNamespace("http://www.w3.org/2003/01/geo/wgs84_pos#")).getValue();

bzw. definierst vorher wieder einen neuen Namespace, mit der anderen URI !

mavinatic hat gesagt.:
Was ist eigentlich dieser Namespace?
Namensraum (XML) ? Wikipedia
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Auslesen der Länge einer XML-Datei in Android Studio XML & JSON 8
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
I Liste in YAML Datei speichern und wieder auslesen XML & JSON 1
A Leeres Array beim Auslesen von XML-Datei XML & JSON 4
S XSD-Datei zulässige Werte auslesen XML & JSON 3
M Große Datei auslesen/in dieser suchen XML & JSON 2
E XML Datei mit DOM auslesen (Text mit Attributen) XML & JSON 2
M XMI-Datei auslesen XML & JSON 4
A SVG Datei auslesen und Batik XML & JSON 1
N XML Datei auslesen / Validierung XML & JSON 4
A Auslesen einer XML Datei XML & JSON 58
P Knoten-Attribute einer xsd-Datei in einem JTree auslesen XML & JSON 18
T Einfach nur die Elemente einer XML Datei auslesen :( XML & JSON 10
G Aus XML-Datei auslesen und als Java-Dialog ausgeben XML & JSON 3
T Tags in XML Datei mit Java erstellen XML & JSON 3
S XML Datei speichern nicht möglich XML & JSON 13
M Objekt zu jsonArray in .json datei hinzufügen ? XML & JSON 3
J Object in JSON Datei einlesen und als neues Object erzeugen (in ein Object Array) XML & JSON 29
I Mit Hibernate eine XML-Datei in eine Tabellenspalte einlesen. XML & JSON 1
MiMa Buch Metadaten aus XML Datei parsen XML & JSON 48
R xlsx-Datei mit Apache POI einlesen XML & JSON 18
S Validierung einer XML-Datei - Führende Leerzeichen und Tabs XML & JSON 10
S CSV Datei einlesen und XML Ausgeben XML & JSON 2
U jar Datei mit ant erstellen XML & JSON 1
P wie kriege ich eine *.dtd Datei mit in die ausführbare *.jar? XML & JSON 2
D XML-Datei per Button erstellen XML & JSON 3
K JAR-File mit XML-Datei XML & JSON 1
M Text eines Elements in XML Datei mit JAVA bearbeiten und kompletten Element-Zweig hinzufügen XML & JSON 16
E JTreedaten in eine XML Datei speichern XML & JSON 3
D Int-Werte in XML-Datei schreiben (DOM) XML & JSON 2
B xsd-Datei ins jar file XML & JSON 5
T Formulardaten in XML Datei speichern XML & JSON 5
H Wsdl datei XML & JSON 2
D Große XML-Datei in einzel Dateien splitten XML & JSON 3
S Neue Inhalte in XML-Datei einfügen XML & JSON 0
S JDOM XML Datei darstellen Fehler! XML & JSON 2
S Xml File für den Aufbau einer anderen Xml Datei XML & JSON 6
M XML-Datei mit JAXB und 2 Namespaces XML & JSON 0
J XML - Datei wird nicht ganz angezeigt XML & JSON 2
P (Eclipse)Ant Script, .jar Datei erstellen mit MANIFEST.MF XML & JSON 12
Z XML Datei mit JDOM einlesen und verarbeiten XML & JSON 6
K Beim Parsen einer XML-Datei Connection timed out XML & JSON 4
E ResultSet als XML Datei speichern XML & JSON 7
M XStream, CSV Datei XML & JSON 9
A Frage zu bestehender XML Datei XML & JSON 6
A Simple Constructor Injection Datei-Pfad XML & JSON 6
K Einlesen eines Parameters aus HTML-Datei XML & JSON 4
Maxim6394 Lesen/Schreiben von XML Datei XML & JSON 9
A XML datei lesbar speichern (eingerückt) XML & JSON 7
M XML Datei Parsen XML & JSON 4
Airwolf89 HTML Datei mit SAXBuilder laden hängt sich auf XML & JSON 4
N Java Code aus XML Datei generieren XML & JSON 8
D Aus lesen einer XML-Datei ( 1 root, 3 childs) XML & JSON 7
D Wie XML Datei einlesen und HTML entities übernehmen? XML & JSON 3
R XLM Datei lesen Ändern (kompliziertes Search and Replace) und Speichern XML & JSON 12
K Kurze XML Datei Parsen XML & JSON 5
M XML Datei heapspace erreicht XML & JSON 3
S Konforme XML Datei über XSD erstellen XML & JSON 2
T Inhalt einer .xml Datei auf Javaoberfläche wiedergeben XML & JSON 4
M XML Datei drucken XML & JSON 8
T Daten aus Programm in XML Datei speichern XML & JSON 2
D XSD Datei erstellen XML & JSON 4
L [SAX] Geschachtelte XML Datei parsen XML & JSON 3
G txt. Datei in xml datei konvertieren XML & JSON 21
K XML Datei in ein Java package „einbinden" XML & JSON 3
L Reihenfolge beim xml Datei parsen einhalten? XML & JSON 8
L xml Datei parsen ohne End-Tag XML & JSON 6
C if-Abfrage mit Datei Variable aus XML-Datei XML & JSON 2
sylo Beim Erzeugen einer XML Datei auch die XML Struktur erzeugen? XML & JSON 11
sylo DOM Document in XML Datei schreiben XML & JSON 5
F XML Datei in Java einlesen XML & JSON 4
J Objektstruktur aus XML-Datei erzeugen XML & JSON 21
D ID's aus XML Datei rauslesen und in Java ausgeben XML & JSON 7
E XML Datei einlesen und Elemente in der Console ausgeben XML & JSON 6
N value Wert einer XML Datei mit JAVA bearbeiten XML & JSON 21
ARadauer Aus XML Datei Objekte erstellen... XML & JSON 3
N MalformedByteSequenceException bei Lesen aus XML Datei XML & JSON 2
H xml-Datei mit Attributen einlesen XML & JSON 3
A XML-Datei: Ab wann kritische Größe erreicht? XML & JSON 4
multiholle XML Datei elegant verarbeiten XML & JSON 14
T Ließt keine XML Datei XML & JSON 2
R JAXB: Aus einem Vector oder List XML Datei erstellen XML & JSON 1
J XML-Datei ein Array einlesen XML & JSON 10
M xml - datei erstellen XML & JSON 2
T Wie einen String(XML Inhalt) in eine XML Datei speichern? XML & JSON 8
P Große XML Datei mittels JDOM bearbeiten / einlesen XML & JSON 6
H XML-Datei in einzelne XML-Dateien zerlegen XML & JSON 2
G Tags oder Zeilen der Not-Validen XML-Datei XML & JSON 7
C Suche in XML-Datei XML & JSON 6
D Zeilennummer in der XML - Datei XML & JSON 5
S Einlesen einer xml Datei XML & JSON 4
M Datei parsen XML & JSON 5
S PDF Erzeugung - Probleme mit der XML Datei bei Schema-Infos XML & JSON 2
S XML Datei einlesen, aber root überspringen XML & JSON 2
T Werte in XML Datei an entsprechender Stelle einfügen XML & JSON 3
Saxony unbekannte XML Datei parsen und ausgeben XML & JSON 10
L XML Datei in Java angeben Pfad? XML & JSON 3
A Mehrere Anwender sollen auf eine XML-Datei zugreifen XML & JSON 4
N neue XML-Datei erstellen mit vorhandener Struktur XML & JSON 18
D XML Datei innerhalb einer JAR Datei parsen XML & JSON 2

Ähnliche Java Themen

Neue Themen


Oben