android之解析xml文件


1.我们先新建一个students.xml文件,把它放到Tomcat的root文件夹下,其内容如下:

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <students>  
  3.     <student sid="1">  
  4.         <sname>大一sname>  
  5.         <ssex>ssex>  
  6.     student>  
  7.     <student sid="2">  
  8.         <sname>小二sname>  
  9.         <ssex>ssex>  
  10.     student>  
  11.     <student sid="3">  
  12.         <sname>张三sname>  
  13.         <ssex>ssex>  
  14.     student>  
  15. students>  

2.新建一个安卓项目

xml布局中写一个按钮 调用getXMLByNet

Java文件中的代码如下:

[html]  view plain  copy
  1. package com.example.cookie.android0726parsexml;  
  2.   
  3.   
  4. import android.app.ProgressDialog;  
  5. import android.os.AsyncTask;  
  6. import android.support.v7.app.AppCompatActivity;  
  7. import android.os.Bundle;  
  8. import android.util.Log;  
  9. import android.util.Xml;  
  10. import android.view.View;  
  11.   
  12. import com.alibaba.fastjson.JSON;  
  13.   
  14. import org.xmlpull.v1.XmlPullParser;  
  15. import org.xmlpull.v1.XmlPullParserException;  
  16.   
  17. import java.io.IOException;  
  18. import java.io.InputStream;  
  19. import java.net.HttpURLConnection;  
  20. import java.net.MalformedURLException;  
  21. import java.net.URL;  
  22. import java.util.List;  
  23.   
  24. public class MainActivity extends AppCompatActivity {  
  25.   
  26.     @Override  
  27.     protected void onCreate(Bundle savedInstanceState) {  
  28.         super.onCreate(savedInstanceState);  
  29.         setContentView(R.layout.activity_main);  
  30.   
  31.     }  
  32.   
  33.     public void getXMLByNet(View view){  
  34.         new MyTask().execute();  
  35.     }  
  36.   
  37.     class MyTask extends AsyncTask {  
  38.   
  39.         @Override  
  40.         protected Object doInBackground(Object[] params) {  
  41.             //获取网络xml数据  
  42.             String path="http://193.168.4.232:8080/students.xml";  
  43.   
  44.             try {  
  45.                 URL urlnew URL(path);  
  46.                 HttpURLConnection connection= (HttpURLConnection) url.openConnection();  
  47.                 //设置请求方式  
  48.                 connection.setRequestMethod("GET");  
  49.                 //设置请求超时的时间  
  50.                 connection.setConnectTimeout(5000);  
  51.                 //获取结果码  
  52.                 int code=connection.getResponseCode();  
  53.                 if (code==200){  
  54.                     //获取数据  
  55.                     InputStream is=connection.getInputStream();  
  56. //                    int len=0;  
  57. //                    byte[] buf=new byte[1024];  
  58. //                    StringBuffer stringBuffer=new StringBuffer();  
  59. //                    while((len=is.read(buf))!=-1){  
  60. //                        String s=new String(buf,0,len);  
  61. //                        stringBuffer.append(s);  
  62. //                    }  
  63. //                    Log.i("test",stringBuffer.toString());  
  64.   
  65.                     //2.解析XML(PULL)  
  66.                     XmlPullParser pullParser=Xml.newPullParser();  
  67.                     pullParser.setInput(is,"UTF-8");  
  68.                     //解析的标签类型  
  69.                     int type=pullParser.getEventType();  
  70.                     //      Log.i("test",type+"type");  
  71.                     while(type!=XmlPullParser.END_DOCUMENT){  
  72.                         switch (type) {  
  73.                             case XmlPullParser.START_TAG:  
  74.                                 //获取开始标签的名字  
  75.                                 String startTagName=pullParser.getName();  
  76.                                 if ("student".equals(startTagName)){  
  77.                                     //获取属性的ID值  
  78.                                     String sid=pullParser.getAttributeValue(0);  
  79.                                     Log.i("text","  "+ sid);  
  80.                                 }else if("sname".equals(startTagName)){  
  81.                                     String sname=pullParser.nextText();  
  82.                                     Log.i("text","  "+ sname);  
  83.                                 }else if("ssex".equals(startTagName)){  
  84.                                     String ssex=pullParser.nextText();  
  85.                                     Log.i("text","  "+ ssex);  
  86.                                 }  
  87.                                 break;  
  88.                             case XmlPullParser.END_TAG:  
  89.                                 break;  
  90.                         }  
  91.                         //细节  
  92.                         type=pullParser.next();  
  93.                     }  
  94.   
  95.                     is.close();  
  96.                 }  
  97.   
  98.   
  99.             } catch (MalformedURLException e) {  
  100.                 e.printStackTrace();  
  101.             } catch (IOException e) {  
  102.                 e.printStackTrace();  
  103.             } catch (XmlPullParserException e) {  
  104.                 e.printStackTrace();  
  105.             }  
  106.   
  107.             return null;  
  108.         }  
  109.   
  110.         @Override  
  111.         protected void onPostExecute(Object o) {  
  112.             super.onPostExecute(o);  
  113.         }  
  114.     }  
  115.   
  116.      
  117. }  

android之解析json

1.在Tomcat的root文件加下新建一个students.json文件

其演示代码如下:

[html]  view plain  copy
  1. {"count":3,  
  2.   
  3. "students":  
  4. [  
  5. {"sid":1,"sname":"么么","ssex":"男"},  
  6. {"sid":2,"sname":"妞妞","ssex":"女"},  
  7. {"sid":3,"sname":"皮皮","ssex":"男"}  
  8. ]  
  9. }  
2.在布局文件中写一个按钮 调用方法

3.Java代码如下:

分析一下演示的JSON类,可以知道里面一个有2个对象

新建一个BigObject类,代码如下

[html]  view plain  copy
  1. package com.example.cookie.android0726parsexml;  
  2.   
  3. import java.util.List;  
  4.   
  5. /**  
  6.  * Created by Administrator on 2017/7/26 0026.  
  7.  */  
  8.   
  9. public class BigObject {  
  10.   
  11.     private int count;  
  12.     private List<Student> students;  
  13.   
  14.     public BigObject(int count, List<Student> students) {  
  15.         this.count = count;  
  16.         this.students = students;  
  17.     }  
  18.   
  19.     public BigObject() {  
  20.   
  21.     }  
  22.   
  23.     public int getCount() {  
  24.         return count;  
  25.     }  
  26.   
  27.     public void setCount(int count) {  
  28.         this.count = count;  
  29.     }  
  30.   
  31.     public List<Student> getStudents() {  
  32.         return students;  
  33.     }  
  34.   
  35.     public void setStudents(List<Student> students) {  
  36.         this.students = students;  
  37.     }  
  38. }  


新建一个Student类,其代码如下:

[html]  view plain  copy
  1. package com.example.cookie.android0726parsexml;  
  2.   
  3. /**  
  4.  * Created by Administrator on 2017/7/26 0026.  
  5.  */  
  6.   
  7. public class Student {  
  8.   
  9.     private int sid;  
  10.     private String sname;  
  11.     private String ssex;  
  12.   
  13.     public Student() {  
  14.     }  
  15.   
  16.     public Student(int sid, String sname, String ssex) {  
  17.         this.sid = sid;  
  18.         this.sname = sname;  
  19.         this.ssex = ssex;  
  20.     }  
  21.   
  22.     public int getSid() {  
  23.         return sid;  
  24.     }  
  25.   
  26.     public void setSid(int sid) {  
  27.         this.sid = sid;  
  28.     }  
  29.   
  30.     public String getSname() {  
  31.         return sname;  
  32.     }  
  33.   
  34.     public void setSname(String sname) {  
  35.         this.sname = sname;  
  36.     }  
  37.   
  38.     public String getSsex() {  
  39.         return ssex;  
  40.     }  
  41.   
  42.     public void setSsex(String ssex) {  
  43.         this.ssex = ssex;  
  44.     }  
  45. }  


[html]  view plain  copy
  1. package com.example.cookie.android0726parsexml;  
  2.   
  3.   
  4. import android.app.ProgressDialog;  
  5. import android.os.AsyncTask;  
  6. import android.support.v7.app.AppCompatActivity;  
  7. import android.os.Bundle;  
  8. import android.util.Log;  
  9. import android.util.Xml;  
  10. import android.view.View;  
  11.   
  12. import com.alibaba.fastjson.JSON;  
  13.   
  14. import org.xmlpull.v1.XmlPullParser;  
  15. import org.xmlpull.v1.XmlPullParserException;  
  16.   
  17. import java.io.IOException;  
  18. import java.io.InputStream;  
  19. import java.net.HttpURLConnection;  
  20. import java.net.MalformedURLException;  
  21. import java.net.URL;  
  22. import java.util.List;  
  23.   
  24. public class MainActivity extends AppCompatActivity {  
  25.   
  26.     private ProgressDialog pd;  
  27.   
  28.     @Override  
  29.     protected void onCreate(Bundle savedInstanceState) {  
  30.         super.onCreate(savedInstanceState);  
  31.         setContentView(R.layout.activity_main);  
  32.   
  33.         pd = new ProgressDialog(this);  
  34.         pd.setMessage("正在拼命加载中。。。。。。。。。。。");  
  35.     }  
  36.   
  37.     public void getJsonByNet(View view){  
  38.         new MyTaskNet().execute();  
  39.   
  40.     }  
  41.   
  42.     class MyTaskNet extends AsyncTask{  
  43.   
  44.         @Override  
  45.         protected void onPreExecute() {  
  46.             super.onPreExecute();  
  47.             pd.show();  
  48.         }  
  49.   
  50.         @Override  
  51.         protected Object doInBackground(Object[] params) {  
  52.             //获取网络JSON数据  
  53.             String path="http://193.168.4.232:8080/students.json";  
  54.             try {  
  55.                 URL url=new URL(path);  
  56.                 HttpURLConnection connection= (HttpURLConnection) url.openConnection();  
  57.                 connection.setRequestMethod("GET");  
  58.                 connection.setConnectTimeout(5000);  
  59.                 if (connection.getResponseCode()==200){  
  60.                     InputStream is=connection.getInputStream();  
  61.                     int len=0;  
  62.                     byte[] buf=new byte[1024];  
  63.                     StringBuffer stringBuffer=new StringBuffer();  
  64.                     while((len=is.read(buf))!=-1){  
  65.                         String s=new String(buf,0,len);  
  66.                         stringBuffer.append(s);  
  67.                     }  
  68.                     Log.i("test",stringBuffer.toString());  
  69.   
  70.                     //解析  
  71.                     BigObject bigObject=JSON.parseObject(stringBuffer.toString(),BigObject.class);  
  72.                     int count=bigObject.getCount();  
  73.                     Log.i("test","count:"+count);  
  74.                     List<Student> students=bigObject.getStudents();  
  75.                     for (Student student : students) {  
  76.                         Log.i("test",student.getSname()+" "+student.getSsex()+" "+student.getSname());  
  77.                     }  
  78.                     is.close();  
  79.                 }  
  80.             } catch (IOException e) {  
  81.                 e.printStackTrace();  
  82.             }  
  83.             return null;  
  84.         }  
  85.   
  86.         @Override  
  87.         protected void onPostExecute(Object o) {  
  88.             super.onPostExecute(o);  
  89.             pd.cancel();  
  90.         }  
  91.     }  
  92. }  




更多相关文章

  1. Android可平移缩放旋转的ImageView的实现
  2. Android逆向分析必备网址大全
  3. Android(安卓)如何用HttpClient 以Get方式获取数据并添加http头
  4. android中的数据存储 收藏
  5. Android开发从入门到精通(8) _1
  6. Android中Touch事件分发过程全解析
  7. Invalid file name: must contain only [a-z0-9_.]
  8. 在Ubuntu下使用adb
  9. Android(安卓)的 ApkTool 反编译 apk xml 和去广告

随机推荐

  1. golang如何调用函数?
  2. golang是面向对象吗?
  3. 用Go实现字符串的逆序
  4. golang如何实现高并发?
  5. 解决Go升级到1.14后无法Debug
  6. golang如何实现继承?
  7. 如何在Linux上运行第一个go程序
  8. golang如何实现收发邮件?
  9. 学习Go 语言操作 MySQL 之 预处理
  10. golang如何实现自举?