分类:
2008-09-12 09:12:52
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: * 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(""); 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()); } } }
运行结果: C:\java>java YahooHandler
Weather: Mostly Cloudy, low=17, high=28
Weather: AM Clouds/PM Sun, low=16, high=26
Yahoo会返回当天和第二天的Weather预报。