Android之xml解析和json解析
16lz
2021-01-26
android之解析xml文件
1.我们先新建一个students.xml文件,把它放到Tomcat的root文件夹下,其内容如下:
[html] view plain copy- <?xml version="1.0" encoding="UTF-8"?>
- <students>
- <student sid="1">
- <sname>大一sname>
- <ssex>女ssex>
- student>
- <student sid="2">
- <sname>小二sname>
- <ssex>男ssex>
- student>
- <student sid="3">
- <sname>张三sname>
- <ssex>男ssex>
- student>
- students>
2.新建一个安卓项目
xml布局中写一个按钮 调用getXMLByNet
Java文件中的代码如下:
[html] view plain copy- package com.example.cookie.android0726parsexml;
- 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 {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- }
- public void getXMLByNet(View view){
- new MyTask().execute();
- }
- class MyTask extends AsyncTask {
- @Override
- protected Object doInBackground(Object[] params) {
- //获取网络xml数据
- String path="http://193.168.4.232:8080/students.xml";
- try {
- URL url= new URL(path);
- HttpURLConnection connection= (HttpURLConnection) url.openConnection();
- //设置请求方式
- connection.setRequestMethod("GET");
- //设置请求超时的时间
- connection.setConnectTimeout(5000);
- //获取结果码
- int code=connection.getResponseCode();
- if (code==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());
- //2.解析XML(PULL)
- XmlPullParser pullParser=Xml.newPullParser();
- pullParser.setInput(is,"UTF-8");
- //解析的标签类型
- int type=pullParser.getEventType();
- // Log.i("test",type+"type");
- 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("text"," "+ sid);
- }else if("sname".equals(startTagName)){
- String sname=pullParser.nextText();
- Log.i("text"," "+ sname);
- }else if("ssex".equals(startTagName)){
- String ssex=pullParser.nextText();
- Log.i("text"," "+ ssex);
- }
- 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);
- }
- }
- }
android之解析json
1.在Tomcat的root文件加下新建一个students.json文件
其演示代码如下:
[html] view plain copy- {"count":3,
- "students":
- [
- {"sid":1,"sname":"么么","ssex":"男"},
- {"sid":2,"sname":"妞妞","ssex":"女"},
- {"sid":3,"sname":"皮皮","ssex":"男"}
- ]
- }
3.Java代码如下:
分析一下演示的JSON类,可以知道里面一个有2个对象
新建一个BigObject类,代码如下
[html] view plain copy
- package com.example.cookie.android0726parsexml;
- import java.util.List;
- /**
- * Created by Administrator on 2017/7/26 0026.
- */
- public class BigObject {
- private int count;
- private List<Student> students;
- public BigObject(int count, List<Student> students) {
- this.count = count;
- this.students = students;
- }
- public BigObject() {
- }
- public int getCount() {
- return count;
- }
- public void setCount(int count) {
- this.count = count;
- }
- public List<Student> getStudents() {
- return students;
- }
- public void setStudents(List<Student> students) {
- this.students = students;
- }
- }
新建一个Student类,其代码如下:
[html] view plain copy
- package com.example.cookie.android0726parsexml;
- /**
- * 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;
- }
- }
[html] view plain copy
- package com.example.cookie.android0726parsexml;
- 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 getJsonByNet(View view){
- new MyTaskNet().execute();
- }
- class MyTaskNet extends AsyncTask{
- @Override
- protected void onPreExecute() {
- super.onPreExecute();
- pd.show();
- }
- @Override
- protected Object doInBackground(Object[] params) {
- //获取网络JSON数据
- String path="http://193.168.4.232:8080/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());
- //解析
- BigObject bigObject=JSON.parseObject(stringBuffer.toString(),BigObject.class);
- int count=bigObject.getCount();
- Log.i("test","count:"+count);
- List<Student> students=bigObject.getStudents();
- for (Student student : students) {
- Log.i("test",student.getSname()+" "+student.getSsex()+" "+student.getSname());
- }
- is.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return null;
- }
- @Override
- protected void onPostExecute(Object o) {
- super.onPostExecute(o);
- pd.cancel();
- }
- }
- }
更多相关文章
- Android可平移缩放旋转的ImageView的实现
- Android逆向分析必备网址大全
- Android(安卓)如何用HttpClient 以Get方式获取数据并添加http头
- android中的数据存储 收藏
- Android开发从入门到精通(8) _1
- Android中Touch事件分发过程全解析
- Invalid file name: must contain only [a-z0-9_.]
- 在Ubuntu下使用adb
- Android(安卓)的 ApkTool 反编译 apk xml 和去广告