XMLPuLL解析

複製代碼
  1 package com.bawei.day14_xmlpull;  2  3 import java.io.IOException;  4 import java.io.InputStream;  5 import java.util.ArrayList;  6 import java.util.List;  7  8 import org.xmlpull.v1.XmlPullParser;  9 import org.xmlpull.v1.XmlPullParserException;  10  11 import android.os.Bundle;  12 import android.app.Activity;  13 import android.util.Xml;  14 import android.view.Menu;  15 import android.widget.ArrayAdapter;  16 import android.widget.ListView;  17 import android.widget.TextView;  18  19 public class MainActivity extends Activity {  20  21 private ListView mStuListView;  22 private List<Student> stus;  23  24  @Override  25 protected void onCreate(Bundle savedInstanceState) {  26  super.onCreate(savedInstanceState);  27  setContentView(R.layout.activity_main);  28 TextView tv=(TextView) findViewById(R.id.tv);  29 mStuListView = (ListView) findViewById(R.id.stuList);  30 try {
//調用方法 31 parseStudent(getAssets().open("persons.xml")); 32 if (stus != null && stus.size() > 0) { 33 ArrayAdapter<Student> adapter = new ArrayAdapter<Student>(this, android.R.layout.simple_list_item_1, stus); 34 mStuListView.setAdapter(adapter); 35 } 36 37 } catch (IOException e) { 38 // TODO Auto-generated catch block 39 e.printStackTrace(); 40 } 41 42 } 43 44 private List<Student> parseStudent(InputStream is) { 45 stus = new ArrayList<Student>();
//建立pull解析器 46 XmlPullParser parser = Xml.newPullParser(); 47 try {
//把須要解析的數據添加到解析器中,並設置數據格式 48 parser.setInput(is, "utf-8");
//經過解析器觸發第一次事件,並獲取事件類型碼 49 int eventType = parser.getEventType(); 50 //定義用來存儲標籤名稱的變量 51 String tagName = ""; 52 Student stu = null;
//判斷是否解析到文檔末尾,沒有則循環解析 53 while (eventType != XmlPullParser.END_DOCUMENT) { 54 switch (eventType) {
//開始解析文檔 55 case XmlPullParser.START_DOCUMENT: 56 break;
//開始解析標籤 57 case XmlPullParser.START_TAG:
//獲得標籤名字 58 tagName = parser.getName();
//判斷正在接戲的元素標籤是不是person 59 if ("person".equals(tagName)) { 60 stu = new Student(); 61 stu.setId(Integer.valueOf(parser.getAttributeValue(0))); 62 63 } 64 break;
//解析到文本 65 case XmlPullParser.TEXT:
//獲得當前正在解析的文本內容 66 String text = parser.getText(); 67 if (stu != null) {
//判斷正在解析的文本內容是哪一個元素節點裏的 68 if ("name".equals(tagName)) { 69 stu.setName(text); 70 } else if ("age".equals(tagName)) { 71 stu.setAge(Integer.parseInt(text)); 72 } 73 } 74 break;
//解析到結束標籤 75 case XmlPullParser.END_TAG:
//獲得正在解析的元素標籤名 76 tagName = parser.getName();
//獲得正在解析的元素標籤名是不是person 77 if ("person".equals(tagName)) { 78 stus.add(stu); 79 stu = null; 80 81 } 82 83 tagName = ""; 84 break; 85 86 } //本次事件處理完畢,進入下一個節點,下一個事件 87 eventType = parser.next(); 88 } 89 90 } catch (XmlPullParserException e) { 91 // TODO Auto-generated catch block 92 e.printStackTrace(); 93 } catch (IOException e) { 94 // TODO Auto-generated catch block 95 e.printStackTrace(); 96 }finally{ 97 98 try { 99 if(is!=null){ 100 is.close(); 101 } 102 } catch (IOException e) { 103 // TODO Auto-generated catch block 104 e.printStackTrace(); 105 } 106 107 } 108 109 return stus; 110 } 111 112 }
複製代碼

 json解析java

複製代碼
import com.google.gson.Gson;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView = (TextView) findViewById(R.id.tv); try { InputStream is=getAssets().open("newsList.json"); int length = is.available(); byte[] buffer=new byte[length]; is.read(buffer); String jsonStr=new String(buffer,0,length); Gson g=new Gson(); SuperJsonParse sjp=g.fromJson(jsonStr,SuperJsonParse.class); textView.setText(sjp.toString()); } catch (IOException e) { // TODO Auto-generated catch block  e.printStackTrace(); } } }
複製代碼
相關文章
相關標籤/搜索