歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android平台基於Pull方式對XML文件解析及寫入

Android平台基於Pull方式對XML文件解析及寫入

日期:2017/3/1 10:25:17   编辑:Linux編程

XML技術在跨平台的情況下的數據交互中得到了廣泛的應用,假如我們需要開發一個Android應用程序,需要同服務器端進行數據交互,通過XML文件可以很方便的在Android平台和服務器之間進行數據傳輸,具體實現涉及到對XML文件進行解析及寫入的技術。本文實現在Android平台上基於Pull方式對XML文件解析的技術。

更多Android相關信息見Android 專題頁面 http://www.linuxidc.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個屬性:ID,Name,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對象parser,R.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();

寫入文檔結束標記

Copyright © Linux教程網 All Rights Reserved