Android解析服务器端发来的xml数据示例
2023-06-13 09:15:02 时间
Android跟服务器交互数据,有时数据量大时,就需要以xml形式的交互数据。这里来实现服务器给Android客户端发送xml数据,Android客户端解析。
服务器端我使用dom4j第三方包来组织xml数据,大家可自行百度下载。而Android客户端则使用XmlPullParser来解析xml数据。
服务器端代码:
复制代码代码如下:
服务器端我使用dom4j第三方包来组织xml数据,大家可自行百度下载。而Android客户端则使用XmlPullParser来解析xml数据。
服务器端代码:
packageservlet;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.net.URLDecoder;
importjava.sql.Connection;
importjava.sql.ResultSet;
importjava.sql.Statement;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.dom4j.Document;
importorg.dom4j.DocumentHelper;
importorg.dom4j.Element;
publicclassgetSmsextendsHttpServlet{
publicgetSms(){
super();
}
publicvoiddestroy(){
super.destroy();//Justputs"destroy"stringinlog
//Putyourcodehere
}
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
Documentdocument=DocumentHelper.createDocument();
Elementpersons=DocumentHelper.createElement("persons");
document.add(persons);
persons.addElement("address").addText("南京");
persons.addElement("id").addAttribute(1);
persons.addElement("thread_id").addText(2);
persons.addElement("date").addText("2013");
persons.addElement("status").addText(-1);
persons.addElement("type").addText(0);
persons.addElement("body").addText("测试");
Stringxml=document.asXML();//用dom4j组织一个XML字符串
response.setContentType("text/xml;charset=UTF-8");//设置返回值的类型
response.getOutputStream().write(xml.getBytes("UTF-8"));//设置返回值
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
publicvoidinit()throwsServletException{
//Putyourcodehere
}
}
Android客户端:
Stringurl="http://10.0.2.2:8080/sms_server/servlet/getSms";
try{
URLu=newURL(url);
HttpURLConnectionconn=(HttpURLConnection)u.openConnection();
conn.setRequestMethod("GET");
if(conn.getResponseCode()==200){
InputStreamin=conn.getInputStream();
XmlPullParserparser=Xml.newPullParser();
parser.setInput(in,"UTF-8");
intevent=parser.getEventType();
while(event!=XmlPullParser.END_DOCUMENT){
Log.i("start_document","start_document");
switch(event){
caseXmlPullParser.START_TAG:
if("address".equals(parser.getName())){
Stringaddress=parser.nextText();
}
if("id".equals(parser.getName())){
intid=parser.getAttributeValue(0);
}
if(("thread_id").equals(parser.getName())){
Stringthread_id=parser.nextText();
}
if("date".equals(parser.getName())){
Stringdate=parser.nextText();
}
if(("status").equals(parser.getName())){
Stringstatus=parser.nextText();
}
if("type".equals(parser.getName())){
Stringtype=parser.nextText();
}
if("body".equals(parser.getName())){
Stringbody=parser.nextText();
}
break;
caseXmlPullParser.END_TAG:
break;
}
event=parser.next();
}
}
}catch(Exceptione){
}
相关文章
- 代码加密 android,Android 开发怎样做代码加密或混淆「建议收藏」
- android移动点餐系统内容和要求,基于Android云计算的移动点餐系统
- android 安装p12证书,如何在Android中使用p12证书(客户端证书)
- android sdk根目录,Android SDK位置
- android 定时器重置,Android定时器延迟和重置[通俗易懂]
- android短信验证码方案,Android之短信验证码
- robotium android,Robotium 测试Android apk安装包
- Android界面布局属性layout_gravity和gravity的区别
- Android 编译_android线程
- Android之CardView[通俗易懂]
- Android SDK Tools_android.intent.category.DEFAULT
- 【Android 应用开发】Android 数据存储 之 SQLite数据库详解
- 【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表文件格式 | 头文件 数据格式 | 全局字符串池 数据格式 | 包数据 数据格式 | 包头 数据格式 )
- 【Android 逆向】Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 一 | mmap 函数简介 )
- Android开发中json数据解析工具类详解编程语言
- MySQL高效操作XML数据(mysql操作xml)
- Android阵营如何诞生下一个iOS?
- 使用MySQL实现XML数据导入(mysql xml 导入)
- 深入剖析MySQL与XML数据交互中的符号使用方法(mysql xml $和)
- Android获取assets文件夹中的数据并写入SD卡示例