⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0149.htm

📁 JspServlet教程专栏 对javaservlet讲述的非常详细
💻 HTM
字号:
<html>

<head>
<title>新时代软件教程:操作系统 主页制作 服务器 设计软件 网络技术 编程语言 文字编辑</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
body, table {font-size: 9pt; font-family: 宋体}
a {text-decoration:none}
a:hover {color: red;text-decoration:underline}
.1  {background-color: rgb(245,245,245)}
-->
</style>
</head>
<p align="center"><script src="../../1.js"></script></a>
<p align="center"><big><strong>XML和JSP交互技术(2)</strong></big></p>
<div align="right">---摘自《JSP爱好者》&nbsp;(文/刘玉锋)</div>

<br>  三、JSP和XML交互<br>
<br>
  前面已经说过了,Jsp通过SUN公司的API-JAXP可以实现和XML的交互,那么具体实现主要有两种方法,一种是采用DOM2&nbsp;API,另外一种是采用SAX2&nbsp;API。<br>
<br>
  在这里我们主要讨论JAXP中的SAX(Simple&nbsp;API&nbsp;for&nbsp;XML&nbsp;Parsing)技术,DOM2技术可以看SUN公司相关的文档。<br>
<br>
  1)关于SAX模型<br>
<br>
  SAX模型是一种处理XML文件的方法,它是事件驱动的,有些类似于AWT中的事件驱动机制,通过事件驱动来识别XML文档的内容。在API中关于SAX的主要有下面的几个包:<br>
<br>
  oorg.xml.sax<br>
<br>
  oorg.xml.sax.helpers<br>
<br>
  oorg.xml.sax.ext<br>
<br>
在前台的Java程序或者是Jsp程序中通过调用这几个包中的API就可以很好地实现Java和XML的交互。<br>
<br>
  2)关于HandlerBase接口<br>
<br>
  我们知道在AWT中一般是通过实施ActionListener等接口实现事件的处理的,同样的在SAX中SUN也提供了一个类似的接口HandlerBase来处理XML解析的功能,通过将HandlerBase和XML文件关联可以很好的来处理XML文件。<br>
<br>
  在实施接口中我们主要重载三个HandlerBase的方法startElement(String&nbsp;tag,&nbsp;AttributeList&nbsp;attrs)、characters(char[]&nbsp;ch,&nbsp;int&nbsp;start,&nbsp;int&nbsp;length)、endElement(String&nbsp;name)。<br>
<br>
  startElement()在读取一行XML数据的开始标记时候触发,子类必须覆盖这个方法,这样就可以在处理XML节点前先进行自己的处理(比如开始读取或者写入XML文件中的节点时候)。<br>
<br>
  public&nbsp;void&nbsp;startElement&nbsp;(String&nbsp;name,&nbsp;AttributeList&nbsp;attributes)<br>
<br>
   throws&nbsp;SAXException<br>
<br>
   {<br>
<br>
    //&nbsp;no&nbsp;op<br>
<br>
    }<br>
<br>
参数name代表XML节点名字,attributes代表默认或者特殊的属性,这个方法抛出一个违例org.xml.sax.SAXException。<br>
<br>
  characters()方法主要用来处理和之间具体的数据,在处理节点数据时候触发,我们可以覆盖这个方法来进行数据操作的处理,可以添加代码读取节点数据值或者是写入节点数据值。<br>
<br>
  public&nbsp;void&nbsp;characters&nbsp;(char&nbsp;ch[],&nbsp;int&nbsp;start,&nbsp;int&nbsp;length)<br>
<br>
   throws&nbsp;SAXException<br>
<br>
   {<br>
<br>
    //&nbsp;no&nbsp;op<br>
<br>
   &nbsp;}<br>
<br>
参数ch[]代表一个字符数组,start代表字符数组的开始位置,length代表要取的字符数组中ch[]中的元素个数,同样的这个方法抛出一个违例org.xml.sax.SAXException。<br>
<br>
  endElement()方法在处理节点元素结束的时候触发,也就是碰到标记的时候,我们可以覆盖这个方法来进行数据的收尾工作,比如将节点数据写入到文件中。<br>
<br>
  public&nbsp;void&nbsp;endElement&nbsp;(String&nbsp;name)<br>
<br>
   throws&nbsp;SAXException<br>
<br>
    {<br>
<br>
     //&nbsp;no&nbsp;op<br>
<br>
    }<br>
<br>
参数name代表XML节点名字,这个方法抛出一个违例org.xml.sax.SAXException<br>
<br>
  从上面我们也可以看出,三个方法在XML事件处理中的顺序依次为:<br>
<br>
   startElement()àcharacters()àendElement(String&nbsp;name)<br>
<br>
也许还不好理解,不要紧在下面我们将会写一个类myHandler类实现HandlerBase接口,并且覆盖这三个主要的方法来实现我们的XML文件读取操作。<br>
<br>
  3)关于哈希表&nbsp;<br>
<br>
  由于程序用到了哈希表,所以在这里先简单的介绍一下哈希表的基本语法以便大家能更好的理解下面的程序。<br>
<br>
  哈希表HashTable是从Dictionary派生出来的,里面具有一系列的关键字和数值,一个关键字对应一个数值,识别主要是通过对象的哈希代码hashCode识别。<br>
<br>
  我们程序中用到的方法如下:<br>
<br>
  put(Object&nbsp;key,Object&nbsp;value)添加一对关键字/数值到哈希表中<br>
<br>
  get(Object&nbsp;key)根据关键字得到它的值<br>
<br>
  keys()取得所有关键字并返回一个集合Enumeration<br>
<br>
此外,哈希表还具有其他很多有用的方法如长度size()、是否为空empty()、是否重复containsKey()等等,限于篇幅在这里就不进行介绍了。

  </table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -