首页 / XML / XmlPullParser
XmlPullParser
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了XmlPullParser,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3583字,纯文字阅读大概需要6分钟。
内容图文
![XmlPullParser](/upload/InfoBanner/zyjiaocheng/1218/b7c76c70444b4284af25cd087b7f02dc.jpg)
- <? xml version = "1.0" encoding = "utf-8" ?>
- < ListItems desrciption = "Put the entry as the item in Android List" >
- <Entry value="One" />
- <Entry value="Two" />
- <Entry value="Three" />
- <Entry value="Four" />
- <Entry value="Five" />
- <Entry value="Six" />
- <entry>Hello</entry>
- </ ListItems >
XmlPullParser可以用于解释xml文件。这里有两种xml的常见格式:<entry>Hello</entry>和<Entry value="Six" />,在Android XML中使用后者,而这种方式在XmlPullParser中处理也非常方便。它的使用方式归纳如下:
- XmlPullParser通过next(),依次向下检查
- XmlPullParser是事件驱动,如果检测到END_DOCUMENT,应当停止继续检测
- XmlPullParser是事件驱动,当检测到START_TAG,可以读出<AAAA bbbb=xxxx c=yyyyy>的内容,其中AAAA可通过getName()来获取,属性的个数,可通过getAttributeCount()获取,属性的名词和内容可分别通过getAttributeName(index)和getAttributeValue(index)来获取。
- XmlPullParser是事件驱动,如果是END_TAG,则为</AAAA>,可以通过getName()来获得AAAA的内容
- 对于<entry>Hello</entry>这种方式,如果要获取中间的数值,则事件为XmlPullParser.TEXT,可通过getText()来获取内容。
- 由于xml文件可能书写不正确,或者我们在解释的过程中处理不正确,应当使用异常捕获的方式来处理
下面的例子,我们将上述的words.xml分析处理,将Entry数值作为listActivity的每个item的内容。
- /* 1. XmlPullParser通过next(),依次向下检查
- * 2. XmlPullParser是事件驱动,如果检测到 END_DOCUMENT,应当停止继续检测
- * 3. XmlPullParser是事件驱动,当检测到START_TAG,可以读出<AAAA bbbb=xxxx c=yyyyy>的内容,其中AAAA可通过getName()来获取,属性的个数,可通过getAttributeCount()获取,属性的名词和内容可分别通过getAttributeName(index)和getAttributeValue(index)来获取。
- * 4. XmlPullParser 是事件驱动,如果是END_TAG,则为</AAAA>,可以通过getName()来获得AAAA的内容
- * 5. 对于<entry>Hello</entry>这种方式,如果要获取中间的数值,则事件为XmlPullParser.TEXT, 可通过getText()来获取内容。
- * 6. 由于xml文件可能书写不正确,或者我们在解释的过程中处理不正确,应当使用异常捕获的方式来处理
- */
- public class Chapter20Test3 extends ListActivity{
- private ArrayList<String> items = new ArrayList<String>();
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- /*步骤1:进行特定xml文件words的解析,对应第6点,应采用异常捕获防止程序出错*/
- try{
- /* 步骤2:获取xml文件,并给给出XmlPullParser对象*/
- XmlPullParser xpp = getResources().getXml(R.xml.words);
- /* 步骤3:通过循环,逐步解析XML,直至xml文件结束,对应第1点和第2点*/
- while(xpp.getEventType()!=XmlPullParser.END_DOCUMENT){
- /* 步骤4:获取目标ListItems的解析,并将之用method:ListItems来处理,对应第3点 */
- if(xpp.getEventType() == XmlPullParser.START_TAG){
- if(xpp.getName().equals("ListItems")){
- getItems(xpp);
- }
- }
- xpp.next();
- }
- }catch(Throwable t){
- Toast.makeText(this, "Failed:" + t.toString(), 2000).show();
- }
- setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,items));
- }
- /* 解析<ListItems ... >.... </Listitem>的内容,获取每个entry的value的值,注意对异常的处理*/
- private void getItems(XmlPullParser xpp) throws Throwable{
- while(true){
- xpp.next();
- /*<ListItems> ...</ListItems>的内容已经检索完毕,或者文件结束,都退出处理*/
- if((xpp.getEventType() == XmlPullParser.END_TAG && xpp.getName().equals("ListItems"))
- || xpp.getEventType() == XmlPullParser.END_DOCUMENT)
- break;
- if(xpp.getEventType()==XmlPullParser.START_TAG) {
- /*观测点:对第3点的处理,读出属性的名字和数值*/
- if(xpp.getName().equals("Entry")){
- for(int i = 0; i < xpp.getAttributeCount() ; i ++){
- if(xpp.getAttributeName(i).equals("value")){
- items.add(xpp.getAttributeValue(i));
- }
- }
- }
- /*观测点:对第5点的处理,处理<name>value</name>*/
- if(xpp.getName().equals("entry")){
- xpp.next();
- if(xpp.getEventType()==XmlPullParser.TEXT)
- items.add(xpp.getText());
- }
- }
- }
- }
- @Override
- protected void onListItemClick(ListView l, View v, int position, long id) {
- super.onListItemClick(l, v, position, id);
- Toast.makeText(this, items.get(position), Toast.LENGTH_LONG).show();
- }
-
}
原文:http://blog.csdn.net/qi_ruihua/article/details/19400937
内容总结
以上是互联网集市为您收集整理的XmlPullParser全部内容,希望文章能够帮你解决XmlPullParser所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。