android pull解析相關理解

來源:互聯網
上載者:User

標籤:android   style   blog   color   io   使用   ar   for   檔案   

Pull解析XML 
XmlPullParser解析器的運行方式與SAX解析器相似.它提供了類似的事件(開始元素和結束元素),但需要使用parser.next()方法來提取它們.事件將作為數值代碼被發送,因此可以根據不同的事件代碼值來進行不同的處理.通過parser.getEventType()方法來取得事件的代碼值(如XmlPullParser.START_DOCUMENT、XmlPullParser.START_TAG、XmlPullParser.END_TAG). 
當處於某個元素時可以調用XmlPullParser的getAttributte()方法來擷取屬性的值,也可調用它的nextText()擷取本節點的值。 
具體思路: 
*構建PullXmlParser解析器 
XmlPullParser parser = Xml.newPullParser(); 
*將xml文檔註冊到解析器中 
parser.setInput(); 
*觸發事件,獲得事件類型碼 
int event = parser.getEventType(); 
*針對事件進行具體分析 
"name".equals(parser.getName());//判斷開始標籤元素是否是name 
parser.getAttributeValue(0);//得到標籤的屬性值 
parser.nextText();//擷取下一個Text節點的值 
*觸發並進入下一個事件 
event = parser.next(); 
Pull解析和Sax解析不一樣的地方有: 
(1)pull讀取xml檔案後觸發相應的事件調用方法返回的是數字 
(2)pull可以在程式中控制想解析到哪裡就可以停止解析。 
優點:不是一次載入,中途可以停止 

***********pull解析的代碼*************

 1 public class PullparserActivity extends Activity {  2 private TextView mtextview;  3 private ListView mlistview;  4  5 @Override  6 protected void onCreate(Bundle savedInstanceState) {  7  8 super.onCreate(savedInstanceState);  9 setContentView(R.layout.domparser); 10 mtextview = (TextView) findViewById(R.id.textView1); 11 mlistview = (ListView) findViewById(R.id.listView1); 12 mtextview.setText("pull解析xml"); 13 14 List<Student> list = parser(); 15 ArrayAdapter<Student> adapter = new ArrayAdapter<Student>(this, 16 android.R.layout.simple_list_item_1, list); 17 mlistview.setAdapter(adapter); 18 19 } 20 21 private List<Student> parser() { 22 List<Student> list = new ArrayList<Student>(); 23 // 擷取pull解析器 24 XmlPullParser parser = Xml.newPullParser(); 25 try { 26 // 載入xml文檔 27 parser.setInput(PullparserActivity.this.getClassLoader() 28 .getResourceAsStream("student.xml"), "utf-8"); 29 // c.觸發事件,獲得事件類型碼 30 int event = parser.getEventType(); 31 Student student = null; 32 33 while (event != XmlPullParser.END_DOCUMENT) { 34 switch (event) { 35 case XmlPullParser.START_DOCUMENT:// 文檔開始 36 break; 37 case XmlPullParser.START_TAG:// 開始標籤 38 if ("student".equals(parser.getName())) { 39 student = new Student(); 40 student.setId(Integer.valueOf(parser 41 .getAttributeValue(0))); 42 43 } 44 Log.i("TAG", "infor"); 45 if (student != null) { 46 if ("name".equals(parser.getName())) { 47 student.setName(parser.nextText()); 48 } else if ("age".equals(parser.getName())) { 49 student.setAge(Integer.valueOf(parser 50 .getAttributeValue(0))); 51 } 52 } 53 break; 54 case XmlPullParser.END_TAG://結束標籤 55 if ("student".equals(parser.getName())) { 56 list.add(student); 57 student = null; 58 } 59 Log.i("TAG", "infor"); 60 break; 61 case XmlPullParser.TEXT:// 文本解析 62 break; 63 } 64 event = parser.next(); 65 66 } 67 } catch (Exception e) { 68 e.printStackTrace(); 69 } 70 71 return list; 72 } 73 } 

 

android pull解析相關理解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.