使用原始XML资源——使用原始XML文件
下面为示例程序添加一个原始的XML文件,将该XML文件放到/res/xml目录下,该XML文件的内容很简单。XML资源的内容如下。
程序清单: \res\xml\books.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book price="99.0" 出版日期="2008年">疯狂Java讲义</book>
<book price="89.0" 出版日期="2009年">轻量级Java EE企业应用实践</book>
<book price="69.0" 出版日期="2009年">疯狂Ajax讲义</book>
</books>
接下来就可以在Java程序中获取该XML资源,并解析该XML资源中的信息。
界面布局文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:id="@+id/bn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="解析XML资源"/>
<EditText android:id="@+id/show"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false"
android:cursorVisible="false"/> </LinearLayout>
后台Java文件如下:
package com.example.studyresources; import java.io.IOException; import org.xmlpull.v1.XmlPullParserException; import android.os.Bundle;
import android.app.Activity;
import android.content.res.XmlResourceParser;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText; public class XmlResTest extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_xml_res_test);
//获取bn按钮,并为该按钮绑定事件监听器
Button bn=(Button)findViewById(R.id.bn);
bn.setOnClickListener(new OnClickListener(){ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
//根据XML资源的ID获取解析该资源的解析器
//XmlResourceParser 是 XmlPullParse的子类
XmlResourceParser xrp=getResources().getXml(R.xml.books);
try
{
StringBuilder sb=new StringBuilder("");
//还没有到XML文档的结尾处
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.show);
show.setText(sb.toString());
}
catch(XmlPullParserException e)
{
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}
}});
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.xml_res_test, menu);
return true;
} }
上面程序中①号粗体字代码用于不断获取Pull解析的解析事件,程序中第一行粗体字只要解析事件不等于XmlResourceParser.END_DOCUMNET(也就是还没有解析结束),程序将一直解析下去,通过这种方式即可把整份XML文档的内容解析出来。
上面的程序中包含了一个按钮和一个文本框,当用户单击该按钮时,程序将会解析指定XML文档,并把文档中的内容显示出来。运行该程序,然后单击“解析XML资源”按钮,程序显示如图6.9所示的界面。

使用原始XML资源——使用原始XML文件的更多相关文章
- 使用原始XML资源——定义原始XML资源
原始XML资源一般保存在/res/xml路径下——当使用ADT创建Android应用时,/res/目录下并没有包含该目录,开发者应该自行手动创建xml目录. 接下来Android应用对原始XML资源没 ...
- Android xml资源文件中@、@android:type、@*、?、@+含义和区别
一.@代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@andr ...
- (转载)Android xml资源文件中@、@android:type、@*、?、@+引用写法含义以及区别
原帖地址:http://blog.csdn.net/zfrong/article/details/7332545 Android xml资源文件中@.@android:type.@*.?.@+引用写法 ...
- 【转】Android xml资源文件中@、@android:type、@*、?、@+含义和区别
一.@代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@andr ...
- Android反编译(二)之反编译XML资源文件
Android反编译(二) 之反编译XML资源文件 [目录] 1.工具 2.反编译步骤 3.重新编译APK 4.实例 5.装X技巧 6.学习总结 1.工具 1).反编译工具 apktool http ...
- res文件夹及xml资源文件详解
目录 一.values文件:存放字符串(strings).颜色(colors).尺寸(dimens).数组(arrays).样式(styles类似于CSS文件).类型等资源 二.drawable:存放 ...
- 三个特殊资源目录 /res/xml /res/raw 和 /assets
在android开发中,我们离不开资源文件的使用,从drawable到string,再到layout,这些资源都为我们的开发提供了极大的便利,不过我们平时大部分时间接触的资源目录一般都是下面这三个. ...
- 【krpano】krpano xml资源解密(破解)软件说明与下载(v1.4)
欢迎加入qq群551278936讨论krpano技术以及获取最新软件. 该软件已经不再维护,现在已经被KRPano资源分析工具取代,详情参见 http://www.cnblogs.com/reac ...
- 【krpano】krpano xml资源解密(破解)软件说明与下载(v1.2)
欢迎加入qq群551278936讨论krpano技术以及获取最新软件. 该软件已经不再维护,现在已经被KRPano资源分析工具取代,详情参见 http://www.cnblogs.com/reac ...
随机推荐
- ural1424 Minibus
Minibus Time limit: 1.0 secondMemory limit: 64 MB Background Minibus driver Sergey A. Greedson has b ...
- 制作windows镜像
下载包含windows驱动的iso: http://222.186.58.77/virtio-win-0.1-30.iso?fid=kF46uzxlPMrgvLDErP0ohhZYwAUASLoCAA ...
- 'xcopy' 'ipconfig'。。。 不是内部或外部命令,也不是可运行的程序 或批处理文件
最近在win8下安装软件的时候,总是报 "xxx不是内部或外部命令,也不是可运行的程序 或批处理文件" 的错误 . 百思不得其解 打开cmd 或 powerShell 输入xco ...
- 基于Hibernate注解的解读
一.综述 目前为止项目用到的实体类关系有3种: 单向一对多 单向多对一 双向一对多(双向多对一) 二.说明 @Entity --注释声明该类为持久类.将一个Javabean类声明为一 个实体的数据库表 ...
- HDU 4557 非诚勿扰 队列、(记一次失败的SBT尝试)
非诚勿扰 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) [Problem De ...
- must override a superclass method
<properties> <maven.compiler.encoding>UTF-8</maven.compiler.encoding> ...
- 64位系统访问注册表SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
public int ChecNonkWoW64() { try { ; string subKey = @"SOFTWARE\Microsoft\Windows\CurrentVersio ...
- PAT (Advanced Level) 1022. Digital Library (30)
简单模拟题. 写的时候注意一些小优化,小心TLE. #include<iostream> #include<cstring> #include<cmath> #in ...
- Quick Cocos2dx 版本更新
呵呵,不出所料,我又把项目的quick x版本从2.2.1升级到2.2.3了,不知道下次升级到3.x回事神马时候呢,好期待的说. 话说运行2.2.3的player的时候,老是提醒我显卡不支持openg ...
- [iOS Animation]CALayer-图层时间
图层时间 时间和空间最大的区别在于,时间不能被复用 -- 弗斯特梅里克 在上面两章中,我们探讨了可以用CAAnimation和它的子类实现的多种图层动画.动画的发生是需要持续一段时间的,所以计时对整个 ...