zoukankan      html  css  js  c++  java
  • android pull解析相关理解

    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 } 
  • 相关阅读:
    动态规划——Best Time to Buy and Sell Stock IV
    动态规划——Split Array Largest Sum
    动态规划——Burst Ballons
    动态规划——Best Time to Buy and Sell Stock III
    动态规划——Edit Distance
    动态规划——Longest Valid Parentheses
    动态规划——Valid Permutations for DI Sequence
    构建之法阅读笔记05
    构建之法阅读笔记04
    构建之法阅读笔记03
  • 原文地址:https://www.cnblogs.com/xuanyuanzhuo-blog/p/3983463.html
Copyright © 2011-2022 走看看