当前页面: 开发资料首页 → Java 专题 → SAX读取Yahoo Service天气预报数据
摘要: SAX读取Yahoo Service天气预报数据
import org.xml.sax.Attributes; import org.xml.sax.SAXException; import javax.xml.parsers.SAXParserFactory; import javax.xml.parsers.SAXParser; import org.xml.sax.helpers.DefaultHandler; import java.net.URL; import java.io.InputStream; import java.util.Date; import java.util.Locale; import java.text.SimpleDateFormat; /** * For more information, please visit: http://www.crackj2ee.com * Author: Liao Xuefeng */ 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); try { Date publish = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm a z", Locale.US).parse(s_date); //System.out.println("Publish: " + 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("Weather: "+ text + ", low=" + low + ", high=" + high); } super.startElement(uri, localName, qName, attributes); } public static void main(String args[]){ try{ URL url = new URL("http://xml.weather.yahoo.com/forecastrss?u=c&p=CHXX0008"); InputStream input = url.openStream(); SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(false); SAXParser parser = factory.newSAXParser(); parser.parse(input, new YahooHandler()); }catch(Exception e){ System.out.println(e.toString()); } } }</td> </tr> </table> </td> </tr> <tr>
运行结果: C:\java>java YahooHandler
Weather: Mostly Cloudy, low=17, high=28
Weather: AM Clouds/PM Sun, low=16, high=26
Yahoo会返回当天和第二天的Weather预报。
↑返回目录
前一篇: 高速UBB标签转换引擎
后一篇: 如何编出健壮的代码,java编程30条规则