So, I took at look at http://weather.yahooapis.com/forecastrss?w=1103816&u=c to see what it returns and got the following output...
<?xml version="1.0" encoding="UTF-8"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" version="2.0">
<channel>
<title>Yahoo! Weather - Melbourne, AU</title>
<link>http://us.rd.yahoo.com/dailynews/rss/weather/Melbourne__AU/*http://weather.yahoo.com/forecast/ASXX0075_c.html</link>
<description>Yahoo! Weather for Melbourne, AU</description>
<language>en-us</language>
<lastBuildDate>Sun, 02 Mar 2014 1:29 pm AEDT</lastBuildDate>
<ttl>60</ttl>
<yweather:location city="Melbourne" country="Australia" region="VIC"/>
<yweather:units distance="km" pressure="mb" speed="km/h" temperature="C"/>
<yweather:wind chill="21" direction="190" speed="19.31"/>
<yweather:atmosphere humidity="46" pressure="1015.92" rising="0" visibility="9.99"/>
<yweather:astronomy sunrise="7:03 am" sunset="7:57 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 Melbourne, AU at 1:29 pm AEDT</title>
<geo:lat>-37.87</geo:lat>
<geo:long>145.1</geo:long>
<link>http://us.rd.yahoo.com/dailynews/rss/weather/Melbourne__AU/*http://weather.yahoo.com/forecast/ASXX0075_c.html</link>
<pubDate>Sun, 02 Mar 2014 1:29 pm AEDT</pubDate>
<yweather:condition code="28" date="Sun, 02 Mar 2014 1:29 pm AEDT" temp="21" text="Mostly Cloudy"/>
<description><![CDATA[
<img src="http://l.yimg.com/a/i/us/we/52/28.gif"/><br />
<b>Current Conditions:</b><br />
Mostly Cloudy, 21 C<BR />
<BR /><b>Forecast:</b><BR />
Sun - AM Clouds/PM Sun. High: 22 Low: 12<br />
Mon - Partly Cloudy. High: 27 Low: 14<br />
Tue - Mostly Sunny. High: 32 Low: 19<br />
Wed - AM Light Rain. High: 21 Low: 12<br />
Thu - Partly Cloudy. High: 22 Low: 13<br />
<br />
<a href="http://us.rd.yahoo.com/dailynews/rss/weather/Melbourne__AU/*http://weather.yahoo.com/forecast/ASXX0075_c.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 code="30" date="2 Mar 2014" day="Sun" high="22" low="12" text="AM Clouds/PM Sun"/>
<yweather:forecast code="30" date="3 Mar 2014" day="Mon" high="27" low="14" text="Partly Cloudy"/>
<yweather:forecast code="34" date="4 Mar 2014" day="Tue" high="32" low="19" text="Mostly Sunny"/>
<yweather:forecast code="11" date="5 Mar 2014" day="Wed" high="21" low="12" text="AM Light Rain"/>
<yweather:forecast code="30" date="6 Mar 2014" day="Thu" high="22" low="13" text="Partly Cloudy"/>
<guid isPermaLink="false">ASXX0075_2014_03_06_7_00_AEDT</guid>
</item>
</channel>
</rss><!-- fan516.sports.gq1.yahoo.com Sun Mar 2 03:08:38 PST 2014 -->
Round about here I thought to myself, there's simply no way I'm even going to try and parse that, not when there are APIs available to not only read the content, but also to query it.
So I wrote this quick test...
Which reads the RSS feed, finds the description
element from the /rss/channel/item
path, which contains the information you're after.
I then need to parse the description content, as it was in HTML format, this made it easy to find the img
tag and extract the src
attribute to the image.
Finally I displayed a JOptionPane
showing the icon...

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;
public class YahooTest {
public static void main(String[] args) {
Document doc = null;
try {
URL url = new URL("http://weather.yahooapis.com/forecastrss?w=1103816&u=c");
Node descNode = getNodeFrom(url, "/rss/channel/item/description");
if (descNode != null) {
String desc = descNode.getTextContent();
System.out.println(desc);
desc = "<root>" + desc + "</root>";
Node imgSourceNode = getNodeFrom(desc, "/root/img[@src]");
if (imgSourceNode != null) {
String imgUrl = imgSourceNode.getAttributes().getNamedItem("src").getNodeValue();
BufferedImage img = ImageIO.read(new URL(imgUrl));
JOptionPane.showMessageDialog(
null,
"The Weather looks like...",
"Weather",
JOptionPane.PLAIN_MESSAGE,
new ImageIcon(img));
} else {
JOptionPane.showMessageDialog(null, "No image source found in description");
}
} else {
JOptionPane.showMessageDialog(null, "No description node found");
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static Node getNodeFrom(URL url, String query) throws IOException, SAXException, ParserConfigurationException, XPathExpressionException {
Node node = null;
InputStream is = null;
try {
is = url.openStream();
node = getNodeFrom(is, query);
} finally {
try {
is.close();
} catch (Exception e) {
}
}
return node;
}
public static Node getNodeFrom(String text, String query) throws IOException, SAXException, ParserConfigurationException, XPathExpressionException {
Node node = null;
InputStream is = null;
try {
is = new ByteArrayInputStream(text.getBytes());
node = getNodeFrom(is, query);
} finally {
try {
is.close();
} catch (Exception e) {
}
}
return node;
}
public static Node getNodeFrom(InputStream is, String query) throws ParserConfigurationException, SAXException, IOException, XPathExpressionException {
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is);
return getNodeFrom(doc, query);
}
public static Node getNodeFrom(Document doc, String query) throws XPathExpressionException {
return getNodeFrom(doc.getDocumentElement(), query);
}
public static Node getNodeFrom(Node node, String query) throws XPathExpressionException {
XPath xPath = XPathFactory.newInstance().newXPath();
XPathExpression xExp = xPath.compile(query);
return (Node) xExp.evaluate(node, XPathConstants.NODE);
}
}
I did spend some time looking through your code, but your poor variable naming choices made it next to near impossible to figure out what was going on...
Take a look at http://docs.oracle.com/javase/tutorial/jaxp/, How XPath Works and XPath Tutorial