Android中的XML解析

Android中,解析Xml数据的三种方式:

 

1、DOM(org.w3c.dom)

“文档对象模型”方式,解析完的Xml将生成一个树状结构的对象。

 

2、SAX(org.xml.sax)

Simple API for XML,以事件的形式通知程序,对Xml进行解析。

 

3、XMLPULL(org.xmlpull.v1)

类似于SAX方式,程序以“拉取”的方式对Xml进行解析。

public class MainActivity extends Activity {

 

   @Override

   protected void onCreate(BundlesavedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

      getappInfo();//从asstes文件夹下读取并解析app.xml文件,结果保存在集合中

   }

 

   private void getappInfo() {

      new Thread(){

         ArrayList<AppBean> apps;//保存解析结果的集合

         public void run() {

            try {

               InputStream in = getAssets().open("app.xml");

               XmlPullParser parser =XmlPullParserFactory.newInstance().newPullParser();

               parser.setInput(in, "utf-8");//设置编码格式

               AppBean app=null;

               for(int eventType=XmlPullParser.START_DOCUMENT;eventType!=XmlPullParser.END_DOCUMENT;eventType=parser.next()){

                  switch (eventType) {

                  case XmlPullParser.START_DOCUMENT://文档开始处,初始化集合

                     apps=newArrayList<AppBean>();

                     break;

                  case XmlPullParser.START_TAG:

                     String element=parser.getName();

                     if("app".equals(element)){

                        app=new AppBean();//app标签开始处,初始化app

                        //获取name、version和fileSize三个属性值

                        app.setName(parser.getAttributeValue(null, "name"));

                        app.setVersion(parser.getAttributeValue(null, "version"));

                     app.setFileSize(Integer.parseInt(parser.getAttributeValue(null, "fileSize")));

                     }else if("thumb".equals(element)){//获取thumb标签值

                        app.setThumb(parser.nextText());

                     }else if("apk".equals(element)){//获取apk标签值

                        app.setApk(parser.nextText());

                     }else if("intro".equals(element)){//获取intro标签值

                        app.setIntro(parser.nextText());

                     }

                     break;

                  case XmlPullParser.END_TAG:

                     if("app".equals(parser.getName())){//app标签结束处,将app添加至集合

                        apps.add(app);

                     }

                     break;

                  }

               }

               for(AppBeanappBean:apps){//遍历集合,在日志中显示集合元素值

                  Log.i("main",appBean.toString());

               }

            } catch (IOException e) {

               // TODO Auto-generatedcatch block

               e.printStackTrace();

            } catch (XmlPullParserException e) {

               // TODO Auto-generatedcatch block

               e.printStackTrace();

            }

         };

      }.start();

     

   }

}

 

 

android SDK提供了xmlpull api,xmlpull和sax类似,是基于流(stream)操作文件,然后根据节点事件回调开发者编写的处理程序.因为是基于流的处理,因此xmlpull和sax都比较节约内存资源,不会象dom那样要把所有节点以对橡树的形式展现在内存中.xmlpull比sax更简明,而且不需要扫描完整个流.

是一种基于流形式来操作文件,并且会根据节点来回调程序这样就比较节约资源,不需要扫描整个流

<?xml version="1.0" encoding="utf-8"?>

<apps>

<app name="腾讯手机管家" version="4.6.0"fileSize="10464">

 <thumb>/thumb/tencent_safe.png</thumb>

  <apk>/apk/tencent_safe.apk</apk>

  <intro>腾讯手机管家是一款完全免费的手机安全管理软件,以手机安全管理软件先锋为使命,提供体验加速、健康优化、安全防护、软件管理等职能话的手机管理功能。

        </intro>

</app>

<app name="百度手机卫士" version="4.2.0"fileSize="8847">

 <thumb>/thumb/baidu_safe.png</thumb>

 <apk>/apk/baidu_safe.apk</apk>

  <intro>六亿人用百度,更信赖百度手机卫士。提供超强贴心的安全服务,更快更安心!\n防吸费、防骚扰、百度查杀、手机加速、垃圾清理、应用管理......,功能全面!\n收流量助手:狂省上网流量;\n防骚扰:远离骚扰电话、垃圾短信;\n防吸费:杜绝流量偷跑、话费暗扣;\n防诈骗:拦截诈骗短信电话,避免财产损失;\n病毒查杀:专业强力杀毒,查杀率全球评测第一;\n手机加速:智能加速,手机不在卡顿;\n垃圾清理:强力清理,手机空间更足;\n应用管理:轻松卸载、升级、搜索应用。</intro>

</app>

<app name="金山毒霸" version="3.3.1"fileSize="8581">

 <thumb>/thumb/kingsoft_safe.png</thumb>

 <apk>/apk/kingsoft_safe.apk</apk>

  <intro>安卓手机太费电了?掉电快、司机、手机发烫、卡慢,称为用户心中永远的痛。\n现在拿起手机,安装金山手机毒霸3.0版,体验全新的超级盛典功能,可让手机待机一天遍两天。</intro>

</app>

<app name="安医生" version="3.1.1"fileSize="7526">

 <thumb>/thumb/an_doctor.png</thumb>

 <apk>/apk/an_doctor.apk</apk>

  <intro>安医生3.0系列版本重装上阵!新添快捷界面,常用功能一键通;随心换背景,既能高帅富,也能小清新;全面支持安卓4.3,再新的手机,也挡不住安医生奔腾的心!</intro>

</app>

<app name="瑞星手机安全软件" version="3.22.0"fileSize="4567">

 <thumb>/thumb/ruixing_safe.png</thumb>

 <apk>/apk/ruixing_safe.apk</apk>

  <intro>瑞星手机安全软件是一款完全免费的手机杀毒和安全防护软件,提供了查杀病毒、隐私保护、防骚扰、号码查询和手机优化五大功能。</intro>

</app>

<app name="网秦安全" version="3.22.0"fileSize="7096">

 <thumb>/thumb/wangqin_safe.png</thumb>

  <apk>/apk/wangqin_safe.apk</apk>

  <intro>网秦手机安全软件是一款完全免费的手机杀毒和安全防护软件,提供了查杀病毒、隐私保护、防骚扰、号码查询和手机优化五大功能。</intro>

</app>

<app name="防盗卫士" version="1.1.1"fileSize="696">

 <thumb>/thumb/lost_safe.png</thumb>

 <apk>/apk/lost_safe.apk</apk>

  <intro>防盗卫士是一款基于GPS、网络进行定位的手机防盗应用。当用户的手机被盗、丢失时,可以通过该应用返回当前手机位置,以方便失主尽快找到被盗手机。具有智能激活、人工激活、实时跟踪、设置简单的特点。</intro>

</app>

<app name="大蜘蛛反病毒" version="8.0.0"fileSize="3768">

 <thumb>/thumb/bigspider_safe.png</thumb>

 <apk>/apk/bigspider_safe.apk</apk>

  <intro>大蜘蛛反病毒软件在国际上享有盛誉,以独一无二的非特征风险程序运算法则而著称的顶级安全软件,更是唯一获得俄罗斯联邦国防部许可证的安全品牌。</intro>

</app>

<app name="AVG" version="10.1.5"fileSize="10393">

 <thumb>/thumb/avg_safe.png</thumb>

 <apk>/apk/avg_safe.apk</apk>

  <intro>AVG是能够让你的智能手机面授恶意软件、手机病毒和垃圾爹娘的侵袭。</intro>

</app>

<app name="LBE安全大师" version="5.1.5"fileSize="5529">

 <thumb>/thumb/lbe_safe.png</thumb>

 <apk>/apk/lbe_safe.apk</apk>

  <intro>LBE安全大师业界首创面ROOT,无需ROOT也能获取系统权限,完美支持Android4.3系统。\nNFC解锁:利用NFC轻松触碰完美解锁。</intro>

</app>

<app name="摩安卫士" version="8.4.0"fileSize="6737">

  <name>摩安卫士</name>

 <version>8.4.0</version>

 <thumb>/thumb/mobile_an_safe.png</thumb>

 <apk>/apk/mobile_an_safe.apk</apk>

 <fileSize>6737</fileSize>

  <intro>清新风格操作界面,简单易懂,方便快捷,带给您不一样的操作体验。</intro>

</app>

 

</apps>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值