zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

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

Android数据XML 解析 示例 服务器端
2023-06-13 09:15:02 时间
Android跟服务器交互数据,有时数据量大时,就需要以xml形式的交互数据。这里来实现服务器给Android客户端发送xml数据,Android客户端解析。

服务器端我使用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){

}