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

📄 0148.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交互技术(3)</strong></big></p>
<div align="right">---摘自《JSP爱好者》&nbsp;(文/刘玉锋)</div>

<br>  4)&nbsp;实施HandlerBase接口<br>
<br>
  在这里我们编写一个myHandler的类,它用来实施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)以便能对XML文件进行操作。<br>
<br>
  为了保存数据以便外部程序能够调用本类中的数据,我们采用了哈希表结构来保存解析XML文件后的所有节点名字以及节点的数据值,startElement()方法主要用来读取XML文件中的节点名称,characters()方法主要用来根据节点名称读取节点数据,endElement()方法主要是在一个XML节点处理完毕后将这对节点名称和节点数据保存在哈希表中。<br>
<br>
  在外部程序中我们只需要调用getTable()方法返回一个哈希表对象就可以读取所有的节点和节点数据值了。<br>
<br>
  代码不多,而且我在下面添加了很多注释,应该很好看懂了。<br>
<br>
  myHandler.java文件<br>
<br>
  file://文件放置在包com.jsp21.www中<br>
<br>
  package&nbsp;com.jsp21.www;<br>
<br>
  file://导入相关的java&nbsp;API<br>
<br>
  import&nbsp;java.io.*;<br>
<br>
  import&nbsp;org.w3c.dom.*;<br>
<br>
  import&nbsp;org.xml.sax.*;<br>
<br>
  import&nbsp;javax.xml.parsers.SAXParser;<br>
<br>
  import&nbsp;javax.xml.parsers.SAXParserFactory;<br>
<br>
  import&nbsp;java.util.Hashtable;<br>
<br>
  import&nbsp;java.util.Enumeration;<br>
<br>
  //&nbsp;myHandler类实现HandlerBase接口;<br>
<br>
  public&nbsp;class&nbsp;myHandler&nbsp;extends&nbsp;HandlerBase&nbsp;{<br>
<br>
  private&nbsp;String&nbsp;myElement&nbsp;=&nbsp;null;&nbsp;file://XML文件中的标记名称;<br>
<br>
  private&nbsp;String&nbsp;myValue&nbsp;=&nbsp;null;&nbsp;file://XML文件中标记对应的值;<br>
<br>
  private&nbsp;Hashtable&nbsp;mytable&nbsp;=&nbsp;new&nbsp;Hashtable();&nbsp;file://用来保存XML文件中所有的数据;<br>
<br>
  file://得到保存有XML数据的哈希表Hashtable;<br>
<br>
  public&nbsp;Hashtable&nbsp;getTable()&nbsp;{<br>
<br>
   return&nbsp;mytable;<br>
<br>
  }<br>
<br>
  file://覆盖HandlerBase接口中的startElement方法,读取一行XML数据的开始标记时候执行此方法;<br>
<br>
  //&nbsp;tag代表XML中的标记,如前面XML文件中的NAME&nbsp;AGE等;<br>
<br>
  public&nbsp;void&nbsp;startElement(String&nbsp;tag,&nbsp;AttributeList&nbsp;attrs)<br>
<br>
   throws&nbsp;SAXException&nbsp;{<br>
<br>
   myElement&nbsp;=&nbsp;tag;<br>
<br>
  }<br>
<br>
  file://覆盖HandlerBase接口中的characters方法,主要用来得到和之间具体的数据;<br>
<br>
  //&nbsp;当对应myElement的标记发现值后,也就是startElement方法执行完毕后,就会触发这个characters方法来得到具体的数值;<br>
<br>
  file://如myElement="姓名"时候,myValue就会等于"刘玉锋";<br>
<br>
  public&nbsp;void&nbsp;characters(char[]&nbsp;ch,&nbsp;int&nbsp;start,&nbsp;int&nbsp;length)<br>
<br>
  throws&nbsp;SAXException&nbsp;{<br>
<br>
    myValue&nbsp;=&nbsp;new&nbsp;String(ch,&nbsp;start,&nbsp;length);<br>
<br>
  }<br>
<br>
  file://覆盖HandlerBase接口中的endElement方法,主要用来在一行XML数据读取完毕后进行自己的处理;<br>
<br>
  //&nbsp;当XML文件中一行标记读取完毕后,触发此endElement方法;<br>
<br>
  file://如果存在对应的结束标记,就将前面得到的标记myElement和值myValue<br>
<br>
  file://放入到mytable哈希表中;<br>
<br>
  public&nbsp;void&nbsp;endElement(String&nbsp;name)&nbsp;throws&nbsp;SAXException&nbsp;{<br>
<br>
  if&nbsp;(&nbsp;myElement.equals(name)&nbsp;)&nbsp;{<br>
<br>
   mytable.put(myElement,&nbsp;myValue);<br>
<br>
  }<br>
<br>
  }<br>
<br>
  }<br>
<br>
好了,编译这个class,并把myHandler.class文件放置在CLASSPATH能找到的路径中,比如Tomcat中应用程序的Web-inf\classes\com\jsp21\www目录下。

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

⌨️ 快捷键说明

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