例如,我们想要得到如下图所示的 关于 Sfax Tunisia 的天气
代码部分
在开始之前, 为了得到需要的天气情况,我们需要指定 City
或者 State
String c = city.getText().toString(); String s = state.getText().toString(); StringBuilder URL = new StringBuilder(BaseURL); URL.append(c+","+s); String fullUrl= URL.toString(); try { URL website= new URL(fullUrl); //getting xmlReader to parse data SAXParserFactory spf= SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); XMLReader xr = sp.getXMLReader() ; HandlingXmlStuff doingWork = new HandlingXmlStuff(); xr.setContentHandler(doingWork); xr.parse(new InputSource(website.openStream())); String information = doingWork.getInformation(); tv.setText(information); } catch(Exception e) { tv.setText("error"); }
在此之后, 我们需要开始解析Xml
public class HandlingXmlStuff extends DefaultHandler {XMLDataCollected info = new XMLDataCollected();public String getInformation(){ return info.dataToString();} @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (localName.equals("city")) { String city=attributes.getValue("data"); info.setCity(city); }else if (localName.equals("temp_f")){ String t = attributes.getValue("data"); int temp = Integer.parseInt(t); info.setTemp(temp); } }}
我们需要指定数据模型与使用到的方法
public class XMLDataCollected { int temp= 0; String city=null ; public void setCity(String c) { city= c ; } public void setTemp(int t ) { temp = t ; } public String dataToString() { return "In"+city+" the current Temp in F is "+ temp+" degrees"; }}
结束语
在这个案例中,你学会了如何在Android 应用中使用XML解析,这将允许你更方便的在应用中实现许多特性