使用原始XML资源保留配置信息或者相关数据资源
在Android中, 有一些数据如配置信息,应用想着的数据资源需要保留,我们可以用原始XML资源来保留。不过,要注意一点的是,在Android Studio中原始XML资源不能直接定义在/res/路径下,会出现存在,在无法在工程目录中找到,并且也无法被应用所使用的情况,所以我们可以建立/res/xml目录,并且创建的时候选择File,类型里面便会有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();
}
}
});
}
到此,相关的信息也就可以解析并提出出来了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |