使用原始的XML资源
2014-02-19 13:05
309 查看
实例
在res文件夹下建立xml文件夹,在该文件夹下建立
car.xml
<?xml version="1.0" encoding="UTF-8"?>
<cars>
<car price="22w" brand="大众">迈腾</car>
<car price="45w" brand="宝马">535li</car>
<car price="36w" brand="奥迪">A6</car>
</cars>
其他文件
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"
tools:context=".MainActivity"
android:orientation="vertical">
<Button android:id="@+id/but"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始解析"
android:layout_gravity="center_horizontal"/>
<TextView android:id="@+id/result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
MainActivity.java
package com.example.resourcexml;
import android.os.Bundle;
import android.app.Activity;
import android.content.res.XmlResourceParser;
import android.text.style.SuperscriptSpan;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView result=(TextView) super.findViewById(R.id.result);
Button but=(Button) super.findViewById(R.id.but);
but.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//根据xml资源的ID解析资源
//XmlResourceParser是XmlPullParser的子类
XmlResourceParser xrp=getResources().getXml(R.xml.car);
try{
StringBuilder sb=new StringBuilder("");
/*
* 文档刚被初始化,所以它应该位于文档的开始,事件应该是START_DOCUMENT,
* 可以通过XmlPullParser.getEventType()
*/
//如果还没有到文档的结尾
while(xrp.getEventType()!=XmlResourceParser.END_DOCUMENT){
//如果遇到了开始标签
if(xrp.getEventType()==XmlResourceParser.START_TAG){
//获取该标签的标签名
String tagName=xrp.getName();
//如果遇到car标签
if(tagName.equals("car")){
//根据属性名来获取属性值
String carPrice=xrp.getAttributeValue(0);
String carBrand=xrp.getAttributeValue(1);
/*
* 如果当前节点是START_TAG节点,而且下一个节点是TEXT节点,那么TEXT节点内容被返回。
* 或者如果下一个节点是END_TAG节点那就返回空String,否则抛出异常
*/
String carModel=xrp.nextText();
sb.append("价格:"+carPrice);
sb.append("品牌:"+carBrand);
sb.append("型号:"+carModel);
}
sb.append("\n");
}
//获取解析器的下一个事件
xrp.next();
}
result.setText(sb);
}
catch(Exception e){
e.printStackTrace();
}
}
});
}
}
相关文章推荐
- 引发类型为“System.OutOfMemoryException”的异常。
- allegro里的重用功能-reuse
- FieldOffset
- android----ToggleButton&Switch
- 不敢留下运行结果的人能回复下吗?(坏笑)
- rhcs 集群相关记录
- Linux内存初始化:bootmem到buddy的过渡
- java 开源 cms FreeCMS1.6发布
- C/C++中extern关键字详解
- 关于指针的解释
- 国产操作系统厂商 中科红旗Linux进入清算程序
- UI篇--Android中3种方法实现back键动作
- 黑马程序员_JAVA 学习笔记17 WEB篇4
- Exchange 2013 五个接收连接器功能与解释
- Linux- 内核引导过程
- 转: SSH框架总结(框架分析+环境搭建+实例源码下载)
- 腾讯广点通测试微信广告:点一下5毛
- C#制作“安装和部署”时,实现软件开机启动
- SplashImage 图片闪烁
- Tomcat免安装版My eclipse配置步骤