Yahoo天气预报调用

现已南京为例


import java.io.InputStream;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class YahooHandler extends DefaultHandler {
public void startElement(String uri, String localName, String qName,
Attributes attributes)throws SAXException {
if ("yweather:condition".equals(qName)) {
String s_date = attributes.getValue(3);
System.out.println("s_date:"+s_date);
try {
Date publish = new SimpleDateFormat(
"EEE, dd MMM yyyy hh:mm a z",

Locale.US).parse(s_date);
System.out.println("发布时间: " + publish.toString());
} catch (Exception e) {
e.printStackTrace();
throw new SAXException("Cannot parse date: " + s_date);
}
} else if ("yweather:forecast".equals(qName)) {
String s_date = attributes.getValue(1);
Date date = null;
try {
date = new SimpleDateFormat("dd MMM yyyy", Locale.US)
.parse(s_date);
} catch (Exception e) {
e.printStackTrace();
throw new SAXException("Cannot parse date: " + s_date);
}
int low = Integer.parseInt(attributes.getValue(2));
int high = Integer.parseInt(attributes.getValue(3));
String text = attributes.getValue(4);
int code = Integer.parseInt(attributes.getValue(5));
System.out.println(text + ", 最低温度=" + low + "度, 最高温度="
+ high+"度;");
}
super.startElement(uri, localName, qName, attributes);
}

public static void main(String args[]) throws Exception {
System.out.println("南京地区天气预报:");
String p=null;
p="CHXX0099";
URL url = new URL(
"http://xml.weather.yahoo.com/forecastrss?u=c&p="+p);
InputStream input = url.openStream();
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(false);
SAXParser parser = factory.newSAXParser();
parser.parse(input, new YahooHandler());
}
}

你可能感兴趣的:(java,c,xml,.net,Yahoo)