我的xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student sid="1">
<sname>张三</sname>
<sage>19</sage>
</student>
<student sid="2">
<sname>李四</sname>
<sage>19</sage>
</student>
</students>
我的json文件:
{"count":3,"students":[{"sid":1,"sname":"静","sage":19},{"sid":1,"sname":"静","sage":19},{"sid":1,"sname":"静","sage":19}]}
注意:
最后一定要以UTF-8的格式另存。
布局代码:
<?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" android:orientation="vertical" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.android_parsexml.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="获取Xml" android:onClick="getxml"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="获取json" android:onClick="getjson"/> </LinearLayout>
Activity代码:
package com.example.android_parsexml; 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 java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.List; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void getxml(View view){ new MyTask().execute(); } class MyTask extends AsyncTask{ @Override protected Object doInBackground(Object[] objects) { //获取网络XML数据 String path="http://193.168.2.232:8080/student.xml"; try { URL url=new URL(path); HttpURLConnection urlConnection= (HttpURLConnection) url.openConnection(); //设置请求方式 urlConnection.setRequestMethod("GET"); //设置请求超时的时间,进行优化 urlConnection.setConnectTimeout(5000); //获取结果码 int code=urlConnection.getResponseCode(); Log.i("text","近俩了"+code); if (code==200){ Log.i("text","近俩了"); //获取数据 InputStream is=urlConnection.getInputStream(); //解析Xml 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 startName=pullParser.getName(); if ("student".equals(startName)){ //获取属性 String sid=pullParser.getAttributeValue(0); Log.i("text",sid); }else if("sname".equals(startName)){ String sname=pullParser.nextText(); Log.i("text"," "+sname); }else if ("sage".equals(startName)){ String sage=pullParser.nextText(); Log.i("text"," "+sage); } break; case XmlPullParser.END_TAG: break; } type=pullParser.next(); } is.close(); } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Object o) { super.onPostExecute(o); } } public void getjson(View view){ new MyJsonTack().execute(); } class MyJsonTack extends AsyncTask{ @Override protected Object doInBackground(Object[] objects) { String path="http://193.168.2.232:8080/students.json"; try { URL url=new URL(path); HttpURLConnection urlConnection= (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setConnectTimeout(5000); if (urlConnection.getResponseCode()==200){ InputStream is=urlConnection.getInputStream(); int len=0; byte[] by=new byte[1024]; StringBuffer sb=new StringBuffer(); while ((len=is.read(by))!=-1){ sb.append(new String(by,0,len)); } Log.i("text",sb.toString()); //解析JSON BigObject bigObject= JSON.parseObject(sb.toString(),BigObject.class); int count=bigObject.getCount(); Log.i("text",count+""); List<Student> st=bigObject.getStudents(); for (Student student : st) { Log.i("text",student.getSname()); } } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Object o) { super.onPostExecute(o); } } }BigObject 类:package com.example.android_parsexml; import java.util.List; /** * Created by Administrator on 2017/7/26 0026. */ public class BigObject { private int count; private List<Student> students; public int getCount() { return count; } public BigObject() { super(); } public BigObject(int count, List<Student> students) { this.count = count; this.students = students; } public void setCount(int count) { this.count = count; } public List<Student> getStudents() { return students; } public void setStudents(List<Student> students) { this.students = students; } }Student类:
package com.example.android_parsexml; /** * Created by Administrator on 2017/7/26 0026. */ public class Student { private int sid; private String sname; private int sage; public Student() { super(); } public Student(int sid, String sname, int sage) { this.sid = sid; this.sname = sname; this.sage = sage; } 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 int getSage() { return sage; } public void setSage(int sage) { this.sage = sage; } }
权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>提醒:
获取json文件时要导入jia包:fastjson-1.2.3.jar