Android中创建与几种解析xml的方法.docx

上传人:b****6 文档编号:7987987 上传时间:2023-01-27 格式:DOCX 页数:11 大小:250.88KB
下载 相关 举报
Android中创建与几种解析xml的方法.docx_第1页
第1页 / 共11页
Android中创建与几种解析xml的方法.docx_第2页
第2页 / 共11页
Android中创建与几种解析xml的方法.docx_第3页
第3页 / 共11页
Android中创建与几种解析xml的方法.docx_第4页
第4页 / 共11页
Android中创建与几种解析xml的方法.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

Android中创建与几种解析xml的方法.docx

《Android中创建与几种解析xml的方法.docx》由会员分享,可在线阅读,更多相关《Android中创建与几种解析xml的方法.docx(11页珍藏版)》请在冰豆网上搜索。

Android中创建与几种解析xml的方法.docx

Android中创建与几种解析xml的方法

大家好今天我今天给大家讲解一下android中xml的创建以及一些解析xml的常用方法。

首先是创建,我们用XmlSerializer这个类来创建一个xml文件,其次是解析xml文件,常用的有dom,sax,XmlPullParser等方法,由于sax代码有点复杂,本节只讲解一下dom与XmlPullParser解析,sax我将会在下一节单独讲解,至于几种解析xml的优缺点我就不再讲述了。

为了方便理解,我做了一个简单的Demo。

首先首界面有三个按钮,点击第一个按钮会在sdcard目录下创建一个books.xml文件,另外两个按钮分别是调用dom与XmlPullParser方法解析xml文件,并将结果显示在一个TextView里。

大家可以按照我的步骤一步步来:

第一步:

新建一个Android工程,命名为XmlDemo.

第二步:

修改main.xml布局文件,代码如下:

viewplaincopytoclipboardprint?

1.

xmlversion="1.0"encoding="utf-8"?

>

2.

android="

3.android:

orientation="vertical"

4.android:

layout_width="fill_parent"

5.android:

layout_height="fill_parent"

6.>

7.

8.android:

id="@+id/btn1"

9.android:

layout_width="fill_parent"

10.android:

layout_height="wrap_content"

11.android:

text="创建XML文件"

12./>

13.

14.android:

id="@+id/btn2"

15.android:

layout_width="fill_parent"

16.android:

layout_height="wrap_content"

17.android:

text="DOM解析XML"

18./>

19.

20.android:

id="@+id/btn3"

21.android:

layout_width="fill_parent"

22.android:

layout_height="wrap_content"

23.android:

text="XmlPullParse解析XML"

24./>

25.

26.android:

id="@+id/result"

27.android:

layout_width="fill_parent"

28.android:

layout_height="wrap_content"

29./>

30.

第三步:

修改主核心程序XmlDemo.java,代码如下:

viewplaincopytoclipboardprint?

1.packagecom.tutor.xml;

2.importjava.io.File;

3.importjava.io.FileNotFoundException;

4.importjava.io.FileOutputStream;

5.importjava.io.IOException;

6.importjavax.xml.parsers.DocumentBuilder;

7.importjavax.xml.parsers.DocumentBuilderFactory;

8.importjavax.xml.parsers.ParserConfigurationException;

9.importorg.w3c.dom.Document;

10.importorg.w3c.dom.Element;

11.importorg.w3c.dom.NodeList;

12.importorg.xml.sax.SAXException;

13.importorg.xmlpull.v1.XmlPullParser;

14.importorg.xmlpull.v1.XmlPullParserException;

15.importorg.xmlpull.v1.XmlPullParserFactory;

16.importorg.xmlpull.v1.XmlSerializer;

17.importandroid.app.Activity;

18.importandroid.os.Bundle;

19.importandroid.util.Log;

20.importandroid.util.Xml;

21.importandroid.view.View;

22.importandroid.view.View.OnClickListener;

23.importandroid.widget.Button;

24.importandroid.widget.TextView;

25.importandroid.widget.Toast;

26.publicclassXmlDemoextendsActivityimplementsOnClickListener{

27.

28.privatestaticfinalStringBOOKS_PATH="/sdcard/books.xml";

29.privateButtonmButton1,mButton2,mButton3;

30.privateTextViewmTextView;

31.@Override

32.publicvoidonCreate(BundlesavedInstanceState){

33.super.onCreate(savedInstanceState);

34.setContentView(R.layout.main);

35.setupViews();

36.}

37.//初始化工作

38.privatevoidsetupViews(){

39.mTextView=(TextView)findViewById(R.id.result);

40.mButton1=(Button)findViewById(R.id.btn1);

41.mButton2=(Button)findViewById(R.id.btn2);

42.mButton3=(Button)findViewById(R.id.btn3);

43.mButton1.setOnClickListener(this);

44.mButton2.setOnClickListener(this);

45.mButton3.setOnClickListener(this);

46.}

47.//创建xml文件

48.privatevoidcreateXmlFile(){

49.FilelinceseFile=newFile(BOOKS_PATH);

50.try{

51.linceseFile.createNewFile();

52.}catch(IOExceptione){

53.Log.e("IOException","exceptionincreateNewFile()method");

54.}

55.FileOutputStreamfileos=null;

56.try{

57.fileos=newFileOutputStream(linceseFile);

58.}catch(FileNotFoundExceptione){

59.Log.e("FileNotFoundException","can'tcreateFileOutputStream");

60.}

61.XmlSerializerserializer=Xml.newSerializer();

62.try{

63.serializer.setOutput(fileos,"UTF-8");

64.serializer.startDocument(null,true);

65.serializer.startTag(null,"books");

66.for(inti=0;i<3;i++){

67.serializer.startTag(null,"book");

68.serializer.startTag(null,"bookname");

69.serializer.text("Android教程"+i);

70.serializer.endTag(null,"bookname");

71.serializer.startTag(null,"bookauthor");

72.serializer.text("Frankie"+i);

73.serializer.endTag(null,"bookauthor");

74.serializer.endTag(null,"book");

75.}

76.

77.serializer.endTag(null,"books");

78.serializer.endDocument();

79.serializer.flush();

80.fileos.close();

81.}catch(Exceptione){

82.Log.e("Exception","erroroccurredwhilecreatingxmlfile");

83.}

84.Toast.makeText(getApplicationContext(),"创建xml文件成功!

",Toast.LENGTH_SHORT).show();

85.}

86.//dom解析xml文件

87.privatevoiddomParseXML(){

88.Filefile=newFile(BOOKS_PATH);

89.DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();

90.DocumentBuilderdb=null;

91.try{

92.db=dbf.newDocumentBuilder();

93.}catch(ParserConfigurationExceptione){

94.e.printStackTrace();

95.}

96.Documentdoc=null;

97.try{

98.doc=db.parse(file);

99.}catch(SAXExceptione){

100.e.printStackTrace();

101.}catch(IOExceptione){

102.e.printStackTrace();

103.}

104.Elementroot=doc.getDocumentElement();

105.NodeListbooks=root.getElementsByTagName("book");

106.Stringres="本结果是通过dom解析:

"+"/n";

107.for(inti=0;i

108.Elementbook=(Element)books.item(i);

109.Elementbookname=(Element)book.getElementsByTagName("bookname").item(0);

110.Elementbookauthor=(Element)book.getElementsByTagName("bookauthor").item(0);

111.res+="书名:

"+bookname.getFirstChild().getNodeValue()+""+

112."作者:

"+bookauthor.getFirstChild().getNodeValue()+"/n";

113.}

114.

115.mTextView.setText(res);

116.}

117.

118.//xmlPullParser解析xml文件

119.privatevoidxmlPullParseXML(){

120.Stringres="本结果是通过XmlPullParse解析:

"+"/n";

121.try{

122.XmlPullParserFactoryfactory=XmlPullParserFactory.newInstance();

123.XmlPullParserxmlPullParser=factory.newPullParser();

124.

125.xmlPullParser.setInput(Thread.currentThread().getContextClassLoader()

126..getResourceAsStream(BOOKS_PATH),"UTF-8");

127.

128.inteventType=xmlPullParser.getEventType();

129.

130.try{

131.while(eventType!

=XmlPullParser.END_DOCUMENT){

132.StringnodeName=xmlPullParser.getName();

133.switch(eventType){

134.caseXmlPullParser.START_TAG:

135.if("bookname".equals(nodeName)){

136.res+="书名:

"+xmlPullParser.nextText()+"";

137.}elseif("bookauthor".equals(nodeName)){

138.res+="作者:

"+xmlPullParser.nextText()+"/n";

139.}

140.break;

141.default:

142.break;

143.}

144.eventType=xmlPullParser.next();

145.}

146.}catch(IOExceptione){

147.e.printStackTrace();

148.}

149.}catch(XmlPullParserExceptione){

150.e.printStackTrace();

151.}

152.

153.mTextView.setText(res);

154.}

155.//按钮事件响应

156.publicvoidonClick(Viewv){

157.if(v==mButton1){

158.createXmlFile();

159.}elseif(v==mButton2){

160.domParseXML();

161.}elseif(v==mButton3){

162.xmlPullParseXML();

163.}

164.}

165.}

第四步:

由于我们在Sd卡上新建了文件,需要增加权限,如下代码(第16行):

viewplaincopytoclipboardprint?

1.

xmlversion="1.0"encoding="utf-8"?

>

2.

android="

3.package="com.tutor.xml"

4.android:

versionCode="1"

5.android:

versionName="1.0">

6.

icon="@drawable/icon"android:

label="@string/app_name">

7.

name=".XmlDemo"

8.android:

label="@string/app_name">

9.

10.

name="android.intent.action.MAIN"/>

11.

name="android.intent.category.LAUNCHER"/>

12.

13.

14.

15.

minSdkVersion="7"/>

16.

name="android.permission.WRITE_EXTERNAL_STORAGE"/>

17.

第五步:

运行上述工程,查看效果:

启动首界面:

点击创建XML文件按钮,生成books.xml文件

books.xml内容如下:

viewplaincopytoclipboardprint?

1.

xmlversion='1.0'encoding='UTF-8'standalone='yes'?

>

2.

3.

4.Android教程0

5.Frankie0

6.

7.

8.Android教程1

9.Frankie1

10.

11.

12.Android教程2

13.Frankie2

14.

15.

点击DOM解析XML按钮:

点击XmlPullParse解析XML按钮:

Ok~今天就先讲到这里。

thx~

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 中医中药

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1