下面为示例程序添加一个原始的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所示的界面。

最新文章

  1. SharePoint2016合规性策略中心
  2. UI学习笔记---第二天
  3. java cookie
  4. MATLAB 通过二进制读写文件
  5. apache&amp;nginx资料汇总
  6. com.transfer.www
  7. PHP LINUX Notice: undefined $_GET完美解决方法
  8. asp.net mvc 部署在IIS7.5上出现的[没有相关的源行]错误的解决办法
  9. GCD 延时操作
  10. vim忽略大写和小写查找配置
  11. linear-grident的属性和使用
  12. Nginx从入门到实践(一)
  13. ApiKernel
  14. liunx 利用nginx 实现负载均衡
  15. Ionic app 通知在Moto 360 Watch上显示通知(1)
  16. 简单实现RN调用原生方法(IOS)
  17. java语言 找出文章中出现次数最多的单词
  18. #pragma alloc_text
  19. kubernetes dashboard 安装时出现9090: getsockopt: connection refused错误
  20. Java并发编程原理与实战二十一:线程通信wait&amp;notify&amp;join

热门文章

  1. 转 :Oracle分区表 (Partition Table) 的创建及管理
  2. 救援行动(save)
  3. 文件夹添加 IIS 应用程序池用户权限
  4. Fragment和Activity(转)
  5. USACO Section 1.2 Milking Cows 解题报告
  6. VHD容量调整的方法(保存原有vhd)
  7. php自学笔记3
  8. DNS原理及其解析过程
  9. Android Material各种颜色设置
  10. FZU 1054 阅读顺序