Android解析服务器端发来的xml数据

Android跟服务器交互数据,有时数据量大时,就需要以xml形式的交互数据。这里来实现服务器给Android客户端发送xml数据,Android客户端解析。

服务器端我使用dom4j第三方包来组织xml数据,大家可自行百度下载。而Android客户端则使用 XmlPullParser来解析xml数据。

 

服务器端代码:

 

[java]  view plain copy
  1. package servlet;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5. import java.net.URLDecoder;  
  6. import java.sql.Connection;  
  7. import java.sql.ResultSet;  
  8. import java.sql.Statement;  
  9.   
  10. import javax.servlet.ServletException;  
  11. import javax.servlet.http.HttpServlet;  
  12. import javax.servlet.http.HttpServletRequest;  
  13. import javax.servlet.http.HttpServletResponse;  
  14.   
  15. import org.dom4j.Document;  
  16. import org.dom4j.DocumentHelper;  
  17. import org.dom4j.Element;  
  18. public class getSms extends HttpServlet {  
  19.     public getSms() {  
  20.         super();  
  21.     }  
  22.     public void destroy() {  
  23.         super.destroy(); // Just puts "destroy" string in log  
  24.         // Put your code here  
  25.     }  
  26.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  27.             throws ServletException, IOException {  
  28.         response.setContentType("text/html; charset=UTF-8" );  
  29.          request.setCharacterEncoding("UTF-8");           
[java]  view plain copy
  1. Document document = DocumentHelper.createDocument();   
  2.              Element persons = DocumentHelper.createElement("persons");   
  3.              document.add(persons);   
[java]  view plain copy
  1. persons.addElement("address").addText("南京");  
  2. persons.addElement("id").addAttribute(1);   
  3. persons.addElement("thread_id").addText(2);   
  4. persons.addElement("date").addText("2013");   
  5. persons.addElement("status").addText(-1);   
  6. persons.addElement("type").addText(0);   
  7. persons.addElement("body").addText("测试");   
[java]  view plain copy
  1.         String xml = document.asXML();  //用dom4j组织一个XML字符串   
  2.          response.setContentType("text/xml; charset=UTF-8"); //设置返回值的类型   
  3.          response.getOutputStream().write(xml.getBytes("UTF-8"));    //设置返回值   
  4. }  
  5. public void doPost(HttpServletRequest request, HttpServletResponse response)  
  6.         throws ServletException, IOException {  
  7.   
  8. doGet(request,response);  
  9. }  
  10. public void init() throws ServletException {  
  11.     // Put your code here  
  12. }  


Android客户端:

[java]  view plain copy
  1. String url="http://10.0.2.2:8080/sms_server/servlet/getSms";  
  2.     try{  
  3.     URL u = new URL(url);   
  4.        HttpURLConnection conn = (HttpURLConnection) u.openConnection();   
  5.        conn.setRequestMethod("GET");   
  6.        if (conn.getResponseCode() == 200) {   
  7.            InputStream in = conn.getInputStream();   
  8.            XmlPullParser parser = Xml.newPullParser();   
  9.            parser.setInput(in, "UTF-8");   
  10.            int event = parser.getEventType();   
  11.            while (event != XmlPullParser.END_DOCUMENT) {   
  12.                Log.i("start_document""start_document");   
  13.                switch (event) {   
  14.                case XmlPullParser.START_TAG:   
  15.                    if ("address".equals(parser.getName())) {   
  16.                     String address=parser.nextText();  
  17.                       
  18.                    }   
  19.                    if ("id".equals(parser.getName())) {   
  20.                        int id=parser.getAttributeValue(0);   
  21.                    }   
  22.                    if (("thread_id").equals(parser.getName())) {   
  23.                       String thread_id=parser.nextText();   
  24.                    }   
  25.                  
  26.                    if ("date".equals(parser.getName())) {   
  27.                       String date=parser.nextText();   
  28.                    }   
  29.                    if (("status").equals(parser.getName())) {   
  30.                        String status=parser.nextText();   
  31.                    }   
  32.                    if ("type".equals(parser.getName())) {   
  33.                        String type=parser.nextText();   
  34.                    }   
  35.                    if ("body".equals(parser.getName())) {   
  36.                        String body=parser.nextText();   
  37.                    }   
  38.                    break;   
  39.                case XmlPullParser.END_TAG:   
  40.                    break;   
  41.                }   
  42.                event = parser.next();   
  43.            }   
  44.        }  
  45.     }catch(Exception e){  
  46.           
  47.     }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值