Android Xml解析文档格式.docx

上传人:b****5 文档编号:15709693 上传时间:2022-11-15 格式:DOCX 页数:11 大小:18.70KB
下载 相关 举报
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

org.apache.xerces.parsers.SAXParser"

);

  (3)使用javax.xml.parsers包中的SAXParserFactory类和SAXParser类创建:

  SAXParserFactoryspFactory=SAXParserFactory.newInstance();

SAXParsersParser=spFactory.newSAXParser();

2)DOM:

(DocumentObjectModel)文档对象模型,它是基于对象的,又或者基于树的。

它属于两次加载,首先把文档载入内存,第二次把文档解析形成一棵树。

如果文档过大对内存占用是很大的。

但它也有其优点,它可以解析的过程中修改文件树,可以随便存储文件树的任意部分,相对容易理解。

3)Pull解析:

android中内置了pull解析包。

这也是android程序中所推荐的xml解析方式。

从它的字面上就可以看出来,其优点,pull,拉的意思。

我要什么资源我就拿什么资源。

我只需要xml文件中一部分,我就拉一部分。

从而节省资源,提高效率。

当然在J2EE中也可以使用Pull解析。

Pull解析也非常易于理解。

先上图:

我们就用这三种方式对同一个XML文件进行解析:

Xml代码

1.<

?

xmlversion="

1.0"

>

2.<

persons>

3.<

personid="

1"

4.<

name>

tom<

/name>

5.<

age>

13<

/age>

6.<

/person>

7.<

2"

8.<

jerry<

9.<

14<

10.<

11.<

3"

12.<

john<

13.<

34<

14.<

15.<

/persons>

SAX解析代码:

Java代码

1.packagecom.iteye.androidtoast.resolver;

2.

3.

4.importjava.io.InputStream;

5.importjava.util.ArrayList;

6.importjava.util.List;

7.

8.importjavax.xml.parsers.SAXParser;

9.importjavax.xml.parsers.SAXParserFactory;

10.

11.importorg.xml.sax.Attributes;

12.importorg.xml.sax.SAXException;

13.importorg.xml.sax.helpers.DefaultHandler;

14.

15.importandroid.util.Log;

16.

17.importcom.iteye.androidtaost.model.Person;

18.importcom.iteye.androidtaost.service.ParseService;

19.

20.publicclassSaximplementsParseService{

21./*SAX解析,是基于事件的,一次性加载*/

22.privateSAXParserparser;

23.

24.publicSax(){

25.//实例化解析工厂

26.SAXParserFactoryf=SAXParserFactory.newInstance();

27.try{

28.parser=f.newSAXParser();

29.}catch(Exceptione){

30.e.printStackTrace();

31.Log.i("

Sax"

e.getMessage());

32.}

33.}

34.@Override

35.publicList<

Person>

doParse(InputStreamin){

36.XmlHandlerh=newXmlHandler();

37.try{

38.parser.parse(in,h);

39.}catch(Exceptione){

40.//TODOAuto-generatedcatchblock

41.e.printStackTrace();

42.}

43.returnh.getPersons();

44.}

45.

46./*

47.*处理器

48.*/

49.classXmlHandlerextendsDefaultHandler{

50.List<

persons=null;

51.privatePersonp;

52.privateObjectcurrentEleName;

53.

54.

55./**

56.*开始解析文档的时候实例化集合

57.*/

58.@Override

59.publicvoidstartDocument()throwsSAXException{

60.persons=newArrayList<

();

61.}

62.

63.@Override

64.publicvoidendDocument()throwsSAXException{

65.//TODOAuto-generatedmethodstub

66.super.endDocument();

67.}

68.

69./**

70.*元素开始

71.*/

72.@Override

73.publicvoidstartElement(Stringuri,StringlocalName,StringqName,

74.Attributesattributes)throwsSAXException{

75.if("

person"

.equals(localName)){

76.p=newPerson();

//节点开始的时候实例化person

77.p.id=newInteger(attributes.getValue(0));

//得到ID

78.}elseif("

name"

79.this.currentEleName="

;

80.}elseif("

age"

81.this.currentEleName="

82.}

83.

84.}

85.

86./**

87.*元素结束事件

88.*/

89.@Override

90.publicvoidendElement(Stringuri,StringlocalName,StringqName)

91.throwsSAXException{

92.//解析到文档末尾

93.if("

94.//将解析完成的对象添加到集合

95.persons.add(p);

96.}elseif("

.equals(localName)||"

97.this.currentEleName="

"

98.}

99.}

100.

101./**)

102.*用户处理字符节点

103.*/

104.@Override

105.publicvoidcharacters(char[]ch,intstart,intlength)

106.throwsSAXException{

107.Stringstr=newString(ch,start,length);

108.if("

.equals(currentEleName)){

109.p.name=str;

110.}elseif("

111.p.age=newInteger(str);

112.}

113.}

114.

115.publicList<

getPersons(){

116.returnpersons;

117.}

118.

119.}

120.

121.}

DOM解析代码:

Java代码

3.importjava.io.IOException;

8.importjavax.xml.parsers.DocumentBuilder;

9.importjavax.xml.parsers.DocumentBuilderFactor

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

当前位置:首页 > 高等教育 > 历史学

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

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