web项目中使用XML_第1页
web项目中使用XML_第2页
web项目中使用XML_第3页
web项目中使用XML_第4页
web项目中使用XML_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Web项目中使用XMLG200218034 薛谷雨XML是用来定义文档标记语言的框架,主要用来存储和发送数据信息,以便各种基于Web的应用之间以更方便的交换数据。而JSP是服务器端程序动态设计语言,可以用来设计服务器端各种程序(如B2B、B2C等各种系统)。通过SAX接口,可以将XML与JSP结合起来开发各种应用程序。 目前较为流行的方式是通过JAVABEAN访问XML数据,用JSP将数据进行包装,格式化,呈现给用户可读的数据。DOM和SAX 是访问XML的两种基本方式。一般轻量级的XML数据用DOM基本能够满足要求,但是由于DOM在解析时先要将整个XML文件读取到内存中,因此并不适合大数据量的操作。此时SAX将发挥其威力。此例采用SAX作为XML的解析方式。1 SAX接口 SAX的全称是Simple APIs for XML,也即XML简单应用程序接口。它是XML_DEV邮件列表中的成员根据应用的需求自发地定义的一套对XML文档进行操作的接口规范。它并不是由W3C官方所提出的标准,可以说是“民间”的事实标准。实际上,它是一种社区性质的讨论产物。虽然如此,在XML中对SAX的应用丝毫不比DOM少,几乎所有的XML解析器都会支持它。SAX提供了一种对XML文档进行顺序访问的模式,这是一种快速读写XML数据的方式。当使用SAX分析器对XML文档进行分析时,会触发一系列事件,并激活相应的事件处理函数,从而完成对XML文档的访问,所以 SAX接口也被称作事件驱动接口。 -SAX接口之所以叫做简单应用程序接口,是因为这个接口确实非常简单,绝大多数事情分析器都没有做,需要应用程序自己去实现。它的基本原理是由接口的使用者提供符合定义的处理器,XML分析时遇到特定的事件,就去调用处理器中特定事件的处理函数。一般SAX接口都是用JAVA实现的。- 2 实现JSP与XML的结合 JSP是目前最为流行的WEB开发语言,由于其兼顾脚本语言的简洁和JAVA语言的强大,成为企业级开发的首选开发工具。JSP 与 Microsoft 的 ASP 技术非常相似。两者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。在 ASP 或 JSP 环境下, HTML 代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的 HTML 页面只依赖于 Web 服务器,而 ASP 和 JSP 页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到 HTML 代码中,然后一起发送给浏览器。 ASP 和 JSP 都是面向 Web 服务器的技术,客户端浏览器不需要任何附加的软件支持。 JSP通过SUN公司的SAX接口实现和XML的交互。SAX接口是一种处理XML文件的方法,它是事件驱动的,有些类似于AWT中的事件驱动机制,通过事件来识别XML文档的内容。 前台的JSP程序中通过调节器用相应的API就可以很好地实现JSP与XML交互。 我们知道在AWT中一般通过实施ActionListner等接口实现事件的处理的,同样在SAX中SUN也提供了类似的接口HandlerBase来处理解析的功能,通过将HandlerBase和XML文件关联可以很好地来处理XML文件。在实施接口中我们主要重载三个HandlerBase的方法startElement(String tag,AttributeList attrs)、character(charch,int start,int length)、endElement(String name)。 StartElement()方法在读取一行XML数据的开始标记时触发,子类必须覆盖这个方法,这样就可以在处理XML节点前先进行自己的处理(比如开始读取或者写入XML文件中的节点的时候)。 Character()方法主要用来处理节点之间具体的数据,在处理节点数据时候触发,我们可以覆盖这个方法来进行数据操作的处理,可以添加代码读取节点数据值或者是写入节点数据值。 EndElement()方法在处理节点元素结束的时候触发,也就是碰到标记的时候,我们可以覆盖这个方法来进行数据的收尾工作,比如将节点数据写入到文件中。 下面我们将写一个类SAXHandler来实现HandlerBase接口,并且覆盖这三个主要方法来实现我们的XML文件读取操作。文件名为SAXHandler.java。 import java.io.*; import java.util.Hashtable; import org.xml.sax.*; public class SAXHandler extends HandlerBase private Hashtable table = new Hashtable(); private String currentElement = null; private String currentValue = null; public void setTable(Hashtable table) this.table = table; public Hashtable getTable() return table; public void startElement(String tag, AttributeList attrs) throws SAXException currentElement = tag; public void characters(char ch, int start, int length) throws SAXException currentValue = new String(ch, start, length); public void endElement(String name) throws SAXException if (currentElement.equals(name) table.put(currentElement, currentValue); 假设有一个xml样例文件,文件名为sample.xml: 张三 软件学院 123456 休学一年 下面我们将用jsp调用上面的SAXHandler这个类读取这个xml文件中的内容,源代码如下: % File file = new File(c:sample.xml); FileReader reader = new FileReader(file); Parser parser; SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); SAXHandler handler = new SAXHandler(); sp.parse(new InputSource(reader), handler); Hashtable hashTable = handler.getTable(); out.println(学生信息表); out.println(姓名 + + (String)hashTable.get(new String(name) + ); out.println(学院 + + (String)hashTable.get(new String(college)+); out.println(电话 + + (String)hashTable.get(new String(telephone) + ); out.println(备注 + + (String)hashTable.get(new String(notes)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论