加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用原始XML资源保留配置信息或者相关数据资源

发布时间:2020-12-16 08:42:37 所属栏目:百科 来源:网络整理
导读:在Android中, 有一些数据如配置信息,应用想着的数据资源需要保留,我们可以用原始XML资源来保留。不过,要注意一点的是,在Android Studio中原始XML资源不能直接定义在/res/路径下,会出现存在,在无法在工程目录中找到,并且也无法被应用所使用的情况,所

在Android中, 有一些数据如配置信息,应用想着的数据资源需要保留,我们可以用原始XML资源来保留。不过,要注意一点的是,在Android Studio中原始XML资源不能直接定义在/res/路径下,会出现存在,在无法在工程目录中找到,并且也无法被应用所使用的情况,所以我们可以建立/res/xml目录,并且创建的时候选择File,类型里面便会有xml文件。这样,我们既可以顺利引用,也可以方便我们管理我们的资源文件。
顺便提一提,Android里面自带了Pull解析器,用来解析各种XML文档,因此Android推荐开发者用Pull解析器来解析xml文档, 不过开发者也可以根据自己的喜好去下载并安装其他的解析器的jar包。
好了,现在就让我们通过实例来练习一下如何使用原始xml文件来定义数据。
首先奉上效果图,通过点击按钮,我们可以解析并且呈现相关的xml文件里的数据。

第一步便是我们定义在/res/xml/students.xml文件

<?xml version="1.0" encoding="utf-8"?>
<students>
    <student name="zhangsan" 籍贯="广州">计算机专业</student>
    <student name="lisi" 籍贯="深圳">金融专业</student>
    <student name="wangwu" 籍贯="杭州">法学专业</student>
</students>

第二步就是定义相关的activity_main.xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context=".MainActivity">

    <TextView  android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="null">
    </TextView>
    <Button  android:id="@+id/bn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="开始解析"/>

</LinearLayout>

第三步便是在MainActivity中开始解析与另一面定义好的数据与信息。

setContentView(R.layout.activity_main);
        Button bn = (Button)findViewById(R.id.bn);
        bn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View args) {
                //根据XML资源的ID获取该资源的解析器
                XmlResourceParser xrp = getResources().getXml(R.xml.students);
                StringBuilder stringBuilder = new StringBuilder("");
                //判断到没有XML文档的结尾处
                try {
                    while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT)
                    {
                        //如果遇到开始标签
                        if(xrp.getEventType() == XmlResourceParser.START_TAG){
                            //获取该开始标签的标签名
                            String tagName = xrp.getName();
                            if(tagName.equals("student")){
                                //属性值可以通过属性名或者索引来获取,以下演示两种获取方式
                                String studentName=xrp.getAttributeValue(null,"name");
                                stringBuilder.append("学生的名字为:").append(studentName);
                                //根据索引来获取
                                String birthPlace = xrp.getAttributeValue(1);
                                stringBuilder.append(" 籍贯").append(birthPlace);
                                //获取文本节点的值
                                stringBuilder.append(" 专业为").append(xrp.nextText()).append("n");
                            }
                        }
                        //获取解析器的下一个事件
                        xrp.next();
                    }
                    TextView tv = (TextView) findViewById(R.id.text);
                    tv.setText(stringBuilder.toString());
                } catch (XmlPullParserException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
    }

到此,相关的信息也就可以解析并提出出来了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读