Android平台基于Pull方式对XML文件解析及写入


XML技术在跨平台的情况下的数据交互中得到了广泛的应用,假如我们需要开发一个Android应用程序,需要同服务器端进行数据交互,通过XML文件可以很方便的在Android平台和服务器之间进行数据传输,具体实现涉及到对XML文件进行解析及写入的技术。本文实现在Android平台上基于Pull方式对XML文件解析的技术。

更多Android相关信息见Android 专题页面 http://www.bkjia.com/topicnews.aspx?tid=11

XmlPullParser是一个java实现的开源API包(源码下载地址http://www.xmlpull.org/ 

),实现了pull方式解析xml文件的方法, Android SDK中包含了该API,使用时需要导入以下三个包:

import org.xmlpull.v1.XmlPullParser;//包含解析XML文件类的包

import org.xmlpull.v1.XmlPullParserException;//处理异常

importorg.xmlpull.v1.XmlSerializer;//包含写入XML文件类的包

 

我们以SQLite数据库课堂练习中的数据类People为例,People类有4个属性:IDName,Age,Height,假设有一条测试数据ID=1,Name=”杜甫”,Age=30,Height=1.75,

XML文件中对应的数据项元素如下:

<peopleinfo>

    <peopletag="item1">

       <id>1</id>

       <name>杜甫</name>

       <age>30</age>

       <height>1.75</height>

</people>

</peopleinfo>

 

1.     使用XmlPullParser对该文件解析

首先需要初始化一个XmlPullParser对象parserR.xml.peopleinfo为文件peopleinfo.xml在项目中的标识,读入该文件后一步一步对文件中的元素进行解析。

XmlPullParser parser= getResources().getXml(R.xml.peopleinfo);

XmlPullParser的相关函数及说明如下:

相关函数或变量

说明

示例

XmlPullParser.START_DOCUMENT

文档开始标识,根元素

<peopleinfo>

XmlPullParser.END_DOCUMENT

文档结束标识

</peopleinfo>

XmlPullParser.START_TAG

元素开始标识

<people>

XmlPullParser.END_TAG

元素结束标识

</people>

getEventType()

获取当元素的类型 (START_TAG, END_TAG, TEXT, etc.)

如<peopleinfo>

的类型为START_DOCUMENT

next()

获取下一个待解析元素

事件表示<>括号中的一个项

getName()

获取当前元素的名字

如读取到<age>,返回值为”age”

nextText()

返回当前元素所对应的文本值

如事件为<height>时,返回1.75

getAttributeName(int index)

获取当前元素中属性名

如tag

getAttributeValue(int index)

获取当前元素中属性的值

"item1"


解析步骤:

1)        初始化parser,指定xml文件

2)        读取文档开始标识,根元素<peopleinfo>

3)        读取数据项元素开始标识, <people>

a)    读取数据项元素的属性,tag="item1"

b)    读取数据项的子元素,id,name,age,height

4)        一个数据项结束,</people>,保存该数据项的结果

5)        读取文档结束标识,</peopleinfo>

 

2.     使用XmlSerializer对写XML文件

写入XML文件的过程:先初始化一个XmlSerializer对象serializer,设置输出的Writer对象,然后数据写入serializer中,再将该对象通过Writer写入文件。

XmlSerializer serializer = Xml.newSerializer();

serializer.setOutput(writer);

//…

writer.flush()

XmlSerializer的相关函数及说明如下:


相关函数

说明

示例

setOutput(Writer writer)

设置输出的Writer对象

 

startDocument(String encoding, Boolean standalone);

写入XML文件的起始标识语句,必须在setOutput后被调用

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

startTag(String namespace, String name);

写入开始元素标识

<people>,<age>

attribute(String namespace, String name, String value); 

 

tag=”people1”

text(String text)

写入元素值

如:杜甫

endTag(String namespace, String name)

写入元素结束标识

</people>,</age>

endDocument(); 

写入文档结束标记

 

  • 1
  • 2
  • 3
  • 下一页

相关内容