6.5使用原始的XML资源
在某些时候,android应用有些初始化的配置信息,应用相关的数据资源需要保存,一般推荐使用xml文件来保存它们,这种资源就被成为原始XML资源。
6.5.1 定义原始xml资源
原始的XML资源一般报存在res/xml路径下,当使用adt创建android应用时,res目录下并没有包含xml目录,开发者需要自行手动创建一个xml目录。
接下来android应用对原始xml资源没有任何特殊要求,只要它是一份格式良好的xml文档即可。
一旦定义好了原始XML资源,接下来在xml文件中可通过如下语法来访问它 :
@[package_name:]xml.file_name
java中格式 :
[package.]R.xml.file_name
为了在java程序中获取到实际的xml文档,可以通过Resource的如下两个方法来获取 。
1.XmlResourceParser getXML(int id) :获取XML文档,并使用一个XmlPullParser来解析xml文档,该方法返回一个解析器对象(XmlResourceParser是XMLPullParser的子类)
2.InputStream openRewResource(int id) : 获取文档对应的输入流 。
大部分时候,我们可以直接调用getXm(int id)方法来获取xml文档,并对该文档进行解析。android默认使用内置Pull解析器来解析xml文件。
Pull解析类似于SAX解析,都是采取事件驱动方式来解析。当Pull解析器开始工作之后,开发者可不断地调用Pull解析器的next()方法来获取下一个解析事件(开始文档,结束文档,开始标签,结束标签等等)当处于某个元素处时,可调用XmlPullParser的getAttributeValue()方法来获取该元素属性值,也可调用XMLPullParser的nextText()方法来获取文本节点的值。
6.5.2使用原始XML文件
books.xml
<?xml version="1.0" encoding="utf-8"?>
<books><book price = "88.8" 出版时间="2008年" > wanlihua 1 blog </book><book price = "79.8" 出版时间="2009年" > wanlihua 2 blog </book><book price = "90.8" 出版时间="2010年" > wanlihua 3 blog </book>
</books>

java:

package com.example.xmlrestest;import android.support.v7.app.ActionBarActivity;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;import org.xmlpull.v1.XmlPullParserException;import java.io.IOException;public class MainActivity extends ActionBarActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button btn = (Button) findViewById(R.id.button1);btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubreadBooksXml();//readGestureXml();}   });}public void readGestureXml() {//根据XML资源id获取解析该资源的解析器XmlResourceParser xrp = getResources().getXml(R.xml.gesture_wakeup);try {StringBuilder sb = new StringBuilder();while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {//如果遇到了开始标签if(xrp.getEventType() == XmlResourceParser.START_TAG){//获取该标签的标签名String tagName = xrp.getName();//如果遇到的的book标签                            if(tagName.equals("gesture")){//根据属性名来获取属性值String gestrueName = xrp.getAttributeValue(null, "name");sb.append("name:");sb.append(gestrueName);//根据属性索引来获取属性值String settingKey = xrp.getAttributeValue(1);sb.append(" settingkey: ");sb.append(settingKey);String settingKeyCmd = xrp.getAttributeValue(2);sb.append(" settingKeyCmd: ");sb.append(settingKeyCmd);}sb.append("\n");}xrp.next();}EditText show = (EditText) findViewById(R.id.textView1);show.setText(sb.toString());} catch (XmlPullParserException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}   }    public void readBooksXml() {//根据XML资源id获取解析该资源的解析器XmlResourceParser xrp = getResources().getXml(R.xml.books);try {StringBuilder sb = new StringBuilder();while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {//如果遇到了开始标签if(xrp.getEventType() == XmlResourceParser.START_TAG){//获取该标签的标签名String tagName = xrp.getName();//如果遇到的的book标签                            if(tagName.equals("book")){//根据属性名来获取属性值String bookName = xrp.getAttributeValue(null, "price");sb.append("价格: ");sb.append(bookName);//根据属性索引来获取属性值String bookPrice = xrp.getAttributeValue(1);sb.append(" 出版日期: ");sb.append(bookPrice);sb.append(" 书名: ");sb.append(xrp.nextText());}sb.append("\n");}xrp.next();}EditText show = (EditText) findViewById(R.id.textView1);show.setText(sb.toString());} catch (XmlPullParserException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}   }@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}
}

使用原始的XML资源相关推荐

  1. 一、android XML资源文件详解 —— 从物理上分析

    转载地址:http://blog.csdn.net/Scotfield_msn/article/details/52455022?locationNum=8 一.android工程文件夹内容介绍 在e ...

  2. Android 应用开发(9)---内联复杂的XML资源

    内联复杂的XML资源 某些资源类型是由XML文件表示的多个复杂资源的组合.一个例子是一个可绘制的动画矢量,它是一个可绘制的资源封装矢量绘制和动画.这需要至少使用三个XML文件. res/drawabl ...

  3. 解析复杂xml资源获取目标参数值

    这个是上个月工作中调试接口的时候用到的,今天得空给简单整理下, 需求是:从返回的xml报文中读取IMAGENUMBER字段(多个),取其最大值. 先截取报文中的一部分感受下: 下面开始对报文进行解析, ...

  4. 学习javaweb中关于配置编写Maven原始pom.xml文件

    今天学习Maven的时候,因为是跟随的b站上的javaweb的一个课程,当up主直接复制pom.xml文件时.视频前的大家都傻眼了...于是老实人只能手敲上去.. 但是在编译阶段就出了大问题. [IN ...

  5. DuiVision开发教程(3)-XML资源文件定义介绍

    全局资源定义-resource.xml 基于DuiVision界面库的程序,需要有一个默认的资源定义XML文件,此文件默认的位置是exe文件所在路径下的xml\resource.xml文件,如果使用了 ...

  6. android xml文件格式,android xml 资源文件中几个格式(@ ? @* @+)的含义

    一.@代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@andr ...

  7. Android xml资源文件中@、@android:type、@*、?、@+含义和区别

    一.@代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@andr ...

  8. idea开发MAVEN项目target 下 mapper.xml资源 文件

    异常信息 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.yaosiyuan. ...

  9. android如何使用xml资源文件,Android-使用xml文件资源定义菜单

    使用 XML 文件定义菜单 Android 提供了创建菜单的方式,一种是在 Java 代码中创建,一种是使用XML 文件定义.上面的实例都是 Java 创建菜单,在 Java 存在如下大学. 实现效果 ...

最新文章

  1. lua的table+setfenv+setmetatable陷阱
  2. 知识蒸馏在推荐系统的应用
  3. RDChiral | 用于处理立体化学的RDKit封装器
  4. Java 线程第三版 第四章 Thread Notification 读书笔记
  5. 第一个Canvas实例-钟表
  6. windows 8文件操作帮助类FileHelper
  7. 下一个计划 : .NET/.NET Core应用性能管理
  8. regsvr32.exe
  9. 职教高中计算机专业知识,新课改背景下计算机专业教学(职教)三维目标设计初探...
  10. Welcome to Apache HBase 介绍一
  11. [英中双语] Pragmatic Software Development Tips 务实的软件开发提示
  12. 谷歌地图离线包-尝试
  13. ArcGIS 基础6-ArcCatalog数据库管理
  14. 理解什么是symbolic link in Python
  15. 04、Hadoop框架HDFS NN、SNN、DN工作原理
  16. Https环境将key秘钥和crt格式证书转成cer证书
  17. 发热内衣的优势在哪里
  18. 如何使用商业化广告赚取收益
  19. 太用力的人跑不远(转)
  20. RMS TO EAP通过MQTT简单实现(2)

热门文章

  1. 计算机应用基础本科实验报告,实验一 计算机基础操作 实验报告
  2. 优动漫PAINT-百褶裙绘制教程
  3. 第18章_MySQL8其它新特性
  4. python绘制皮卡丘 dongdong_Python画皮卡丘
  5. 阿里云弹性公网EIP收费价格表(按量/包年包月/配置费)
  6. 什么是算术运算?什么是关系运算?什么是逻辑运算?
  7. Matlab 关联文件
  8. 基于Java方式如何实现数据同步
  9. ABAP 之ALV展示及下钻弹窗数据页面
  10. flux unity 流体_【游戏流体力学基础及Unity代码(八)】激波捕捉法和RiemannSolver...