最初, 您必须建立一个http连接,以便可以从api获得响应,无论是xml响应还是json响应。您可以使用以下代码。
使班级与活动分开。:-
public class Response {String get_url, response;Activity activity;public Response(String url){ this.get_url = url;}public String getResponse(){ InputStream in = null; byte[] data = new byte[1000]; try { URL url = new URL(get_url); URLConnection conn = url.openConnection(); conn.connect(); in = conn.getInputStream(); Log.d("Buffer Size +++++++++++++", ""+in.toString().length()); BufferedReader rd = new BufferedReader(new InputStreamReader(in),in.toString().length()); String line; StringBuilder sb = new StringBuilder(); while ((line = rd.readLine()) != null) { sb.append(line); } rd.close(); response = sb.toString(); in.read(data); Log.d("INPUT STREAM PROFILE RESPONSE",response); in.close(); } catch (IOException e1) { Log.d("ConNECTION ERROR", "+++++++++++++++++++++++++++"); // TODO Auto-generated catch block e1.printStackTrace(); } return response;}}您可以像这样在活动中上课:-
Response res = new Response("your_url");String getResponse = res.getResponse();因此,您可以从api获得响应。
现在,让解析器
//Extend the class with Default Handler public class XMLParser extends DefaultHandler { //You must have basic knowledge about Array List and setter/getter methods // This is where the data will be stored ArrayList<Item> itemsList; Item item;String data; String type;private String tempVal; //Create the Constructorpublic XMLParser(String data){ itemsList = new ArrayList<Item>(); this.data = data; } public byte parse(){ SAXParserFactory spf = null; SAXParser sp = null; InputStream inputStream = null; try { inputStream = new ByteArrayInputStream(data.getBytes()); spf = SAXParserFactory.newInstance(); if (spf != null) { sp = spf.newSAXParser(); sp.parse(inputStream, this); } } catch (Exception e) { System.out.println("Exception: " + e); e.printStackTrace(); } finally { try { if (inputStream != null) inputStream.close(); } catch (Exception e) { } } if (itemsList != null && itemsList.size() > 0) { // //Log.d("Array List Size",""+tipsList.get(4).getTitle()); return 1; } else { return 0; } } public ArrayList<Item> getItemList(){ return itemsList; } // Here you can check for the xml Tags @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if(localName.equalsIgnoreCase("item")){ item = new Item(); Log.d("Working", "+++++++++++++++++++++++"); } } //tempVal is the variable which stores text temporarily and you // may save the data in arraylists public void characters(char[] ch, int start, int length) throws SAXException { tempVal = new String(ch, start, length); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { if(localName.equalsIgnoreCase("item")){ itemsList.add(item); Log.d("Working in endelement", "+++++++++++++++++++++++"); item.setTitle(tempVal); } }结合所有这些:
现在让我们看一下活动
public void oncreate(){ // Do something or mostly the basic pre // Call the class to initate the connection and get the data FetchList fl = new FetchList(); fl.execute(); } //Always better to use async task for these purposespublic class FetchList extends asyncTask<Void,Void,Byte>{ doinbackground{ // this was explained in first step Response res = new Response("url"); String response = res.getResponse(); XmlParser xml = new XmlParser(response);ArrayList<item> itemList = xml.getItemList();xml.parse(); } }好了,仅此而已。



