Android利用SAX解析XML文件Word文档下载推荐.docx

上传人:b****5 文档编号:15752195 上传时间:2022-11-15 格式:DOCX 页数:10 大小:18.05KB
下载 相关 举报
Android利用SAX解析XML文件Word文档下载推荐.docx_第1页
第1页 / 共10页
Android利用SAX解析XML文件Word文档下载推荐.docx_第2页
第2页 / 共10页
Android利用SAX解析XML文件Word文档下载推荐.docx_第3页
第3页 / 共10页
Android利用SAX解析XML文件Word文档下载推荐.docx_第4页
第4页 / 共10页
Android利用SAX解析XML文件Word文档下载推荐.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

Android利用SAX解析XML文件Word文档下载推荐.docx

《Android利用SAX解析XML文件Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Android利用SAX解析XML文件Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。

Android利用SAX解析XML文件Word文档下载推荐.docx

1、创建一个SAXParserFactory对象(通过类名很容易得知它利用工厂方法模式实现的);

2、调用SAXParserFactory中的newSAXParser方法创建一个SAXParser对象;

3、然后在调用SAXParser中的getXMLReader方法获取一个XMLReader对象;

4、在XMLReader中注册事件处理接口,一般有ContentHandler、ErrorHandler、DTDHandler、EntityHandler四种;

5、调用XMLReader中的parse方法解析指定的XML字符串对象;

步骤四中提到的四个Handler是事件处理接口,SAX的事件处理函数就定义在这四个接口中,利用SAX解析XML文件需要重写接口中的方法。

其中ContentHandler用来处理XML中的内容,ErrorHandler用来处理错误,DTDHandler用来处理DTD,EntityHandler用来处理XML文档中的实体;

最常用的是ContentHandler这个接口,下面是该接口中的一些常用方法:

startDocument()

当遇到文档的开头的时候,调用这个方法,可以在其中做一些预处理的工作。

endDocument()

和上面的方法相对应,当文档结束的时候,调用这个方法,可以在其中做一些善后的工作。

startElement(Stringuri,StringlocalName,StringqName,Attributesatts)

当读到一个开始标签的时候,会触发这个方法。

uri是命名空间(通过xmlns声明),localName是不带命名空间前缀的标签名,qName是带命名空间前缀的标签名。

通过atts可以得到所有的属性名和相应的值。

注意,如果没有指定Namespace,则qName可能为空,当然不同的SAX实现会有所不同,比如在Android中qName为空,而J2SE中localName为空,所以想要总是得到标签名,就需要检查这两个参数的值了。

endElement(Stringuri,StringlocalName,Stringname)

这个方法和上面的方法相对应,在遇到结束标签的时候,调用这个方法。

characters(char[]ch,intstart,intlength)

这个方法用来处理在XML文件中读到的内容,第一个参数为文件的字符串内容,后面两个参数是读到的字符串在这个数组中的起始位置和长度,使用newString(ch,start,length)就可以获取内容。

下面是利用SAX解析XML文件的DEMO程序,首先定义一个XML文件users.xml,内容如下:

[html]viewplaincopyprint?

&

lt;

?

xmlversion="

1.0"

encoding="

utf-8"

gt;

users&

&

userid="

1"

name&

wuxianglong&

/name&

password&

199098&

/password&

/user&

long:

2"

wuwenyuan&

199189&

/long:

user&

/users&

&

其中第二个user标签中字符串long就是所谓的前缀,标签中的id则是该标签的一个属性。

然后我们来实现ContentHandler这个接口,并重写其中的方法来处理上面的XML文件,代码如下:

[java]viewplaincopyprint?

spanstyle="

font-family:

FangSong;

font-size:

13px;

"

packagesax.test;

importjava.util.ArrayList;

importorg.xml.sax.Attributes;

importorg.xml.sax.SAXException;

importorg.xml.sax.helpers.DefaultHandler;

publicclassMyHandlerextendsDefaultHandler{

privateArrayList&

User&

users;

privateUseruser;

privateStringcontent;

publicArrayList&

getUsers(){

returnusers;

}

@Override

publicvoidstartDocument()throwsSAXException{

super.startDocument();

users=newArrayList&

();

System.out.println("

----------StartParseDocument----------"

);

publicvoidendDocument()throwsSAXException{

----------EndParseDocument----------"

publicvoidcharacters(char[]ch,intstart,intlength)

throwsSAXException{

super.characters(ch,start,length);

//获得标签中的文本

content=newString(ch,start,length);

publicvoidstartElement(Stringuri,StringlocalName,StringqName,

Attributesattributes)throwsSAXException{

super.startElement(uri,localName,qName,attributes);

//打印出localname和qName

LocalName-&

+localName);

QName-&

+qName);

if("

user"

.equals(localName)){

user=newUser();

user.setId(Integer.parseInt(attributes.getValue("

id"

)));

publicvoidendElement(Stringuri,StringlocalName,StringqName)

super.endElement(uri,localName,qName);

name"

user.setName(content);

}elseif("

password"

user.setPassword(content);

users.add(user);

}&

/span&

publicclassMyHandlerextendsDefaultHandler{

getUsers(){

returnusers;

}@Override

publicvoidstartDocument()throwsSAXException{

super.startDocument();

users=newArrayList&

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

当前位置:首页 > 高中教育 > 英语

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

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