12月 272012
 

Sax其实只是一个封装了对XML支持的字符串解析器,sax不像DOM方法要把文件全部加载到内存后再进行解析,而是一边读取文件内容一边对已读取的内容进行解析,它提供的一些方法比如startDocument, startElement等都是在读取到相关的内容后抛出的事件,以便我们可以在此时将数据存到自己的数据结构中。

因为解析XML的时候,要在一个继承自DefaultHandler的类中进行,所以最好对要解析的XML数据定义一个类,创建这个类的实例数组来接收数据。本例中要使用的XML文件如下:

所以,在实现解码前我先定义了一个类用于传递XML数据

与DOM解析类似,要使用Sax解析必须先创建一个SAXParserFactory,并在此对象中设置一此属性。

SAXParserFactory创建后使用此对象创建一个SAXParser

按说这时候我们该用saxP的Parse方法来解析XML了,但是我们还没负责解析的DefaultHanlder类,让我们转过头来创建一个解析某XML的DefaultHanlder类吧。

注意:在characters中,我们使用的是tmpUData.webSite = tmpUData.webSite.concat(str);,并不是将str直接赋给tmpUData.webSite, 这是因为character并不一定能将节点内的数据一次全部读取完毕,对于长数据是分块一点一点读进来的,所以如果是直接赋值可能造成只取到了最后一部分数据。

用于解析的DefaultHandler类创建好后,我们就可以继续来解析XML文件了,具体代码如下:

 

 

 

打赏
 Posted by on 2012-12-27