JSONとxml解析

11838 ワード

1.まずTomcatでxmlとjsonファイルを生成する必要があります
student.xml
小さな10 hy 18 tiny 20
student.json
{"count":3,"srudents":[{"sid":1,"sname":"小さい","sex":"女"},{"sid":2,"sname":"小さい1","sex":"男"},{"sid":3,"sname":"小さい3","sex":"女妖"}}
2.その後、ネットワーク環境が正常に構築されたかどうかを検査する
3.コードプレゼンテーション:
xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:orientation="vertical">《

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="xml   "
        android:onClick="getXml"
        />


    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="json   "
        android:onClick="getJosn"
        />
LinearLayout>

5.activity
package com.zking.administrator.g160628_android30_parsexml; import android.app.ProgressDialog; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.util.Xml; import android.view.View; import com.alibaba.fastjson.JSON; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.List; public class MainActivity extends AppCompatActivity {     private ProgressDialog pd;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         pd = new ProgressDialog(this);         pd.setMessage(「必死にロード中...」);    }     public void getXMLByNet(View view){          new MyTask().execute(); }class MyTask extends AsyncTask{@Override protected Object doInBackground(Object[]params){//ネットワークXMLデータString path="http://192.168.43.77:7788/students.xml";try{URL url=new URL(path);HttpURLConnection=(HttpURLConnection)url.openConnection();//要求方式connection.setRequestMethod("GET")の設定;//要求タイムアウト時間connectionを設定する.setConnectTimeout(5000);//結果コードint code=connectionを取得する.getResponseCode(); if(code=200){//取得データInputStreams is=connection.getInputStream();//int len=0;//byte[]buf=new byte[1024];//StringBuffer stringBuffer=new StringBuffer();//                   while((len=is.read(buf))!=-1){//                       String s=new String(buf,0,len);//                       stringBuffer.append(s);//                   }                    //Log.i("test",stringBuffer.toString());//XML(PULL)XmlPullParser pullParser=Xmlを解析する.newPullParser();                     pullParser.setInput(is,"UTF-8");//解析のラベルタイプint type=pullParser.getEventType();                     while(type!=XmlPullParser.END_DOCUMENT){                         switch (type) {case XmlPullParser.START_TAG://開始ラベルの名前を取得String startTagName=pullParser.getName();if(「student」.equals(startTagName)){//属性idの値String sid=pullParser.getAttributeValue(0);Log.i("test",sid);                                }else if("sname".equals(startTagName)){                                     String sname=pullParser.nextText();                                     Log.i("test",""+sname);                                 }else if("sage".equals(startTagName)){                                     String sage=pullParser.nextText();                                     Log.i("test",""+sage);                                 }                                 break;                             case XmlPullParser.END_TAG:                                 break; }//詳細:type=pullParser.next();                     }                     is.close();                 }             } catch (MalformedURLException e) {                 e.printStackTrace();             } catch (IOException e) {                 e.printStackTrace();             } catch (XmlPullParserException e) {                 e.printStackTrace();             }             return null;         }         @Override         protected void onPostExecute(Object o) {             super.onPostExecute(o);         }     }     public void getJsonByNet(View view){          new MyJsonTask().execute();     }     class MyJsonTask extends AsyncTask{         @Override         protected void onPreExecute() {             super.onPreExecute();             pd.show(); }@Override protected Object doInBackground(Object[]params){//ネットワークJsonデータを取得String path="http://192.168.43.77:7788/students.json";             try {                 URL url=new URL(path);                 HttpURLConnection connection= (HttpURLConnection) url.openConnection();                 connection.setRequestMethod("GET");                 connection.setConnectTimeout(5000);                 if(connection.getResponseCode()==200){                     InputStream is=connection.getInputStream();                     int len=0;                     byte[] buf=new byte[1024];                     StringBuffer stringBuffer=new StringBuffer();                     while((len=is.read(buf))!=-1){                         String s=new String(buf,0,len);                         stringBuffer.append(s);                     }                     Log.i("test",stringBuffer.toString());//json//Gson FastJson//解析JSON BigObject bigObject=JSON.parseObject(stringBuffer.toString(),BigObject.class);                     int count=bigObject.getCount();                     Log.i("test",count+"");                     List students=bigObject.getStudents();                     for (Student student : students) {                         Log.i("test",student.getSname()+""+student.getSsex());                     }                 }             } catch (MalformedURLException e) {                 e.printStackTrace();             } catch (IOException e) {                 e.printStackTrace();             }             return null;         }         @Override         protected void onPostExecute(Object o) {             pd.cancel();             super.onPostExecute(o);         }     } }
6.jsonがjarパッケージを導くことに注意
7.jsonのtomcatとエンティティクラスは一致しなければならない
BigObject:クラス
package com.zking.administrator.g160628_android30_parsexml; import java.util.List;/**  * Created by Administrator on 2017/7/26 0026.  */public class BigObject {     private int count;     private List students;     public BigObject() {     }     public BigObject(int count, List students) {         this.count = count;         this.students = students;     }     public int getCount() {         return count;     }     public void setCount(int count) {         this.count = count;     }     public List getStudents() {         return students;     }     public void setStudents(List students) {         this.students = students;     } }
Studioクラス:
package com.zking.administrator.g160628_android30_parsexml;/**  * Created by Administrator on 2017/7/26 0026.  */public class Student {     private int sid;     private String sname;     private String ssex;     public Student() {     }     public Student(int sid, String sname, String ssex) {         this.sid = sid;         this.sname = sname;         this.ssex = ssex;     }     public int getSid() {         return sid;     }     public void setSid(int sid) {         this.sid = sid;     }     public String getSname() {         return sname;     }     public void setSname(String sname) {         this.sname = sname;     }     public String getSsex() {         return ssex;     }     public void setSsex(String ssex) {         this.ssex = ssex;     } }
多分、問題があったらもっと対話してください.