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

在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();
                }
            }
        });
    }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值