Android应用开发Android:读取assets目录下文件(二)
白羽 2019-05-20 来源 :网络 阅读 1154 评论 0

摘要:本文将带你了解Android应用开发Android:读取assets目录下文件(二),希望本文对大家学Android有所帮助。

    本文将带你了解Android应用开发Android:读取assets目录下文件(二),希望本文对大家学Android有所帮助。


Android应用开发Android:读取assets目录下文件(二)


在上篇博客里,介绍了如何读取assets目录下的txt文件。在这里,介绍如何读取xml文件。
   
    xml文件内容如下:
   
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <!--?xml version="1.0" encoding="UTF-8"?-->
    <books>
       <book   id="001"><title></title>
          <price>¥35.00</price>
       </book>
       <book   id="002"><title></title>
          <price>¥66.00</price>
       </book>
       <book   id="003"><title></title>
          <price>¥1.00</price>
       </book>
       <book   id="004"><title></title>
          <price>¥1.50</price>
       </book>
    </books>
    根据xml文件,接下来定义一个Book类,有id, title, price三个属性。
   
    然后使用一个子线程,通过AssetManager读取到数据流,再使用XmlPullParser解析xml文件。
   
    完整示例代码如下:
   
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    package com.li.readassetfile;
     
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
     
    import org.xmlpull.v1.XmlPullParser;
    import org.xmlpull.v1.XmlPullParserException;
     
    import android.app.Activity;
    import android.content.res.AssetManager;
    import android.content.res.XmlResourceParser;
    import android.os.Bundle;
    import android.os.Handler;
    import android.util.Xml;
    import android.widget.TextView;
     
    public class ReadXmlActivity extends Activity {
     
        private TextView tvContent;
     
        @Override
        protected void onCreate(Bundle   savedInstanceState) {
              super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_read_xml);
     
            tvContent = (TextView)   findViewById(R.id.tvContent);
     
            new Handler().post(new   Runnable() {
     
                @Override
                public void run() {
                    AssetManager manager   = getResources().getAssets();
                    List<book>   books = null;
                    Book book =   null;
     
                    try {
                        InputStream   inputStream = manager.open("book.xml");
                        XmlPullParser   parser = Xml.newPullParser();
                          parser.setInput(inputStream, "UTF-8");
     
                        StringBuilder sb   = new StringBuilder();
     
                        try {
                              while(parser.getEventType() != XmlPullParser.END_DOCUMENT){
                                  if(parser.getEventType() == XmlPullParser.START_DOCUMENT){
     
                                    books   = new ArrayList<readxmlactivity.book>();
     
                                }else   if(parser.getEventType() == XmlPullParser.START_TAG){
     
                                      if("book".equals(parser.getName())){
                                          book = new Book();
                                          book.setId(parser.getAttributeValue(0));
                                      }
     
                                      if(book!=null){
                                          if("title".equals(parser.getName())){//判断开始标签元素是否是name  
                                              book.setTitle(parser.nextText());
                                          }else if("price".equals(parser.getName())){//判断开始标签元素是否是price  
                                              book.setPrice(parser.nextText());
                                        }  
                                    }  
     
                                }else   if(parser.getEventType() == XmlPullParser.END_TAG){
                                      if("book".equals(parser.getName())){//判断结束标签元素是否是book
                                          books.add(book);//将book添加到books集合
                                          book = null;
                                    }  
                                }
                                  parser.next();
                            }
     
                            if(books !=   null && books.size() > 0){                        
                                for(int i   = 0; i < books.size(); i ++){
                                      sb.append(books.get(i).getId() + "\b\b");
                                      sb.append(books.get(i).getTitle() + "\b\b");
                                      sb.append(books.get(i).getPrice() + "\b\b");
                                      sb.append("\n");
                                }
                            }
     
                              inputStream.close();
                              tvContent.setText(sb.toString());
                        } catch   (XmlPullParserException e) {
                              e.printStackTrace();
                        }
                    } catch (IOException   | XmlPullParserException e) {
                          e.printStackTrace();
                    }
        

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程