1.雅虎天气api:
String url2 = "http://sugg.us.search.yahoo.net/gossip-gl-location/?appid=weather&output=xml&command=%E5%8C%97%E4%BA%AC";
command是查询城市的名称,中英文皆可
xml文件显示如下:
<m q="tokyo" gprid="GQDeoIJDRjKw_ZaBppEXKA" c="tokyo" n="2">
<s k="Tokyo Prefecture" d="s:iso=JP&woeid=2345889&lon=139.431&lat=35.6998&s=Tokyo Prefecture&c="/>
<s k="Tokyo" d="pt:iso=JP&woeid=1118370&lon=139.741&lat=35.6705&s=Tokyo Prefecture&c=Japan"/>
</m>
2.获取String类型的xml文件
String xml = HttpUtils.getStringByUrl(url2);
GlobalConstant.i("url2-->" + xml);
tvShow.setText(xml);
public static String getStringByUrl(String url) {
String outputString = "";
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(url);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
try {
outputString = httpclient.execute(httpget, responseHandler);
} catch (Exception e) {
GlobalConstant.i("http连接失败---->" + e);
e.printStackTrace();
}
httpclient.getConnectionManager().shutdown();
return outputString;
}
3.开始sax解析
SSaxParese.weatherParese(xml);
/**
*
* sax解析xml文件
* @param weaUrl
* @return 天气类
*/
public static WeatherBean weatherParese(String weaUrl) {
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
WeatherBean weatherBean = new WeatherBean();
try {
XMLReader xmlReader = saxParserFactory.newSAXParser()
.getXMLReader();
WeatherXMLHandler handler = new WeatherXMLHandler();
xmlReader.setContentHandler(handler);
xmlReader.parse(new InputSource(new StringReader(weaUrl)));
} catch (Exception e) {
e.printStackTrace();
GlobalConstant.i("sax解析error-->" + e);
}
return weatherBean;
}
4.具体解析sax的内容处理器
public class WeatherXMLHandler extends DefaultHandler {
WeatherBean weatherBean;
/**
* 构造方法
*/
public WeatherXMLHandler() {
super();
}
private WeatherXMLHandler(WeatherBean weatherBean) {
this.weatherBean = weatherBean;
}
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
GlobalConstant.i("文档解析开始");
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
GlobalConstant.i("文档解析结束");
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
super.startElement(uri, localName, qName, attributes);
GlobalConstant.i("element begin--->");
if (qName.equals("m")) {
// GlobalConstant.i("value--->" + attributes.getValue("q"));
}
if (qName.equals("s")) {
GlobalConstant.i("k--->" + attributes.getValue("k"));
GlobalConstant.i("d--->" + attributes.getValue("d"));
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, qName);
GlobalConstant.i("element end--->");
}
}