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.コードプレゼンテーション:
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; } }
多分、問題があったらもっと対話してください.
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; } }
多分、問題があったらもっと対話してください.