背景
我們需要簡單的訪問XML來解析XML文檔.因此,你只要知道在XML文檔代碼裡結果的位置地方,然後解析它就很簡單.舉個例子,在下面這張圖裡,我們想要知道有關突尼斯的斯法克斯的天氣:
一開始,我們需要指定我們想要知道天氣的城市或者州.
代碼如下 |
複製代碼 |
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解析來輕鬆製作許多功能