This Domain(Admin5.com) is for Sale:

JSP与XML的结合

时间:2007-10-22  来源:不详  作者:林子

  这样泛泛的说来或许有些不容易理解,别急,后面的例子会让你明白SAX的解析过程。看看这个简单XML文件:

<POEM>
<AUTHOR>Ogden Nash</AUTHOR>
<TITLE>Fleas</TITLE>
<LINE>Adam</LINE>
</POEM>
  当XMLReader读到<POEM>标签时,就会调用ContentHandler.startElement()方法,并把标签名POEM作为参数传递过去。在你实现的startElement()方法中需要做相应的动作,以处理当<POEM>出现时应该做的事情。各个事件随着解析的过程(也就是文档读入的过程)一个个顺序的被抛出,相应的方法也会被顺序的调用,最后,当解析完成,方法都被调用后,对文档的处理也就完成了。下面的这个表,列出了在解析上面的那个XML文件的时候,顺序被调用的方法:

  遇到的项目 方法回调

{文档开始} startDocument()
<POEM> startElement(null,"POEM",null,{Attributes})
"" characters("<POEM>...", 6, 1)
<AUTHOR> startElement(null,"AUTHOR",null,{Attributes})
"Ogden Nash" characters("<POEM>...", 15, 10)
</AUTHOR> endElement(null,"AUTHOR",null)
"" characters("<POEM>...", 34, 1)
内容来自dedecms

<TITLE> startElement(null,"TITLE",null,{Attributes})
"Fleas" characters("<POEM>...", 42, 5)
</TITLE> endElement(null,"TITLE",null)
"" characters("<POEM>...", 55, 1)
<LINE> startElement(null,"LINE",null,{Attributes})
"Adam" characters("<POEM>...", 62, 4)
</LINE> endElement(null,"LINE",null)
"" characters("<POEM>...", 67, 1)
</POEM> endElement(null,"POEM",null)
{文档结束} endDocument()
  ContentHandler实际上是一个接口,当处理特定的XML文件的时候,就需要为其创建一个实现了ContentHandler的类来处理特定的事件,可以说,这个实际上就是SAX处理XML文件的核心。下面我们来看看定义在其中的一些方法:
  void characters(char[] ch, int start, int length):这个方法用来处理在XML文件中读到字符串,它的参数是一个字符数组,以及读到的这个字符串在这个数组中的起始位置和长度,我们可以很容易的用String类的一个构造方法来获得这个字符串的String类:String charEncontered=new String(ch,start,length)。
  void startDocument():当遇到文档的开头的时候,调用这个方法,可以在其中做一些预处理的工作。

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息