• JSP教程:1天玩转JSP网站开发技术
  • JSP是什么?
  • JSP的特点与工作流程
  • JSP与ASP、PHP的比较
  • JSP页面的组成及其元素
  • JSP开发环境搭建(Tomcat的安装和配置)
  • 第一个JSP程序
  • JSP注释(多种注释详解)
  • JSP声明:变量、方法和类的声明
  • JSP中嵌入Java代码
  • JSP表达式
  • JSP开发模式(四种模式)
  • JSP常见错误以及解决方案
  • JSP指令详解(三大指令)
  • JSP page指令
  • JSP include指令
  • JSP指令应用实例
  • JSP动作
  • JSP include动作
  • JSP param动作
  • JSP forward动作
  • JSP plugin动作
  • JSP useBean动作
  • JSP setProperty动作
  • JSP getProperty动作
  • JSP application 对象
  • JSP out对象:向客户端输出数据
  • JSP request对象:获取客户端的请求信息
  • JSP response对象:响应客户端的请求并向客户端输出信息
  • JSP session对象
  • JSP pageContext对象
  • JSP page对象
  • JSP config对象
  • JSP获取并显示字符串长度
  • 什么是JavaBean?
  • JavaBean工具
  • JavaBean规范
  • JavaBean的属性(Simple、Indexed、Bound、Constrained)
  • JavaBean的Scope属性
  • JavaBean事件
  • JavaBean实现用户登录界面
  • Servlet是什么?
  • Servlet的生命周期
  • Servlet的类和方法
  • Servlet客户端跳转
  • EL是什么?(详解)
  • JSP EL表达式的基本语法及运算符的优先级(一览表)
  • JSP EL 点(.)运算符和下标([])运算符
  • JSP EL算数运算符
  • JSP EL关系运算符
  • JSP EL逻辑运算符
  • JSP EL条件运算符
  • JSP EL empty空运算符
  • EL表达式中的常量与变量
  • EL表达式的保留字
  • EL表达式的内置对象及其作用域
  • 使用EL表达式访问JavaBean
  • 使用EL表达式访问集合
  • EL表达式内置对象param和paramValues
  • EL表达式内置对象cookie
  • EL表达式内置对象initParam
  • JDBC 的定义及产品组件
  • 建立JDBC连接
  • 利用JDBC发送SQL语句
  • JDBC API ResultSet接口(记录集接口)
  • JDBC RowSet接口
  • JDBC BaseRowSet类和CachedRowSet类
  • 填充CachedRowSet对象记录集(三种方法)
  • File类(在JSP中的使用)详解
  • 使用字节流读/写文件
  • RandomAccessFile类
  • JSP文件上传
  • XML是什么?
  • XML的基本语法
  • JDK 中的 XML API
  • DOM解析XML
  • SAX解析XML
  • DOM4j解析XML
  • SAX(Simple API for XML)也是一种解析 XML 文件的方法,它虽然不是官方标准,但它是 XML 的事实标准,大部分 XML 解析器都支持它。

    SAX 与 DOM 不同的是,它不是一次性将 XML 加载到内存中,而是从 XML 文件的开始位置进行解析,根据定义好的事件处理器,来决定当前解析的部分是否有必要存储。下面例子说明了 SAX 解析 XML 的过程。

    【例 1】SAX 解析 XML 文件。将

    《DOM 解析 XML》

    中例 1 的 XML 文件作为源文件,编写解析类 JAXBSAXDemo.java,代码如下:

    1. package com.eshore;
    2. import org.xml.sax.Attributes;
    3. import org.xml.sax.SAXException;
    4. import org.xml.sax.XMLReader;
    5. import org.xml.sax.helpers.DefaultHandler;
    6. import org.xml.sax.helpers.XMLReaderFactory;
    7. public class JAXBSAXDemo extends DefaultHandler
    8. {
    9. private String preTag;
    10. //接收文档开始的通知
    11. @Override
    12. public void startDocument() throws SAXException
    13. {
    14. preTag=null;
    15. }
    16. //接收元素开始的通知
    17. @Override
    18. public void startElement(String uri, String localName,String qName,Attributes attributes)throws SAXException
    19. {
    20. if("user".equals(qName))
    21. {
    22. System.out.println(qName+"节点的country属性值为:"+attributes.getValue("country"));
    23. }
    24. if("address".equals(qName))
    25. {
    26. System.out.println(qName+"节点的state属性值为:"+attributes.getValue("state"));
    27. }
    28. preTag=qName;
    29. }
    30. //接收元素结束的通知
    31. @Override
    32. public void endElement(String uri,String localName, String qName)throws SAXException
    33. {
    34. preTag=null;
    35. }
    36. //接收元素中数据的通知,在执行完startElement和endElement方法之后执行
    37. public void characters(char ch[], int start, int length)throws SAXException
    38. {
    39. String value=new String(ch, start, length);
    40. if("name".equals(preTag))
    41. {
    42. System.out.println("name节点的值为:"+value);
    43. }
    44. else if("english_name".equals(preTag))
    45. {
    46. System.out.println("english_name节点的值为:"+value);
    47. }
    48. else if("age".equals(preTag))
    49. {
    50. System.out.println("age节点的值为:"+value);
    51. }
    52. else if("sex".equals(preTag))
    53. {
    54. System.out.println("sex节点的值为:"+value);
    55. }
    56. else if("description".equals(preTag))
    57. {
    58. System.out.println("description节点的值为:"+value);
    59. }
    60. if("city".equals(preTag))
    61. {
    62. System.out.println("city节点的值为:"+value);
    63. }
    64. else if("area".equals(preTag))
    65. {
    66. System.out.println("area节点的值为:"+value);
    67. }
    68. }
    69. public static void main(String[] args) throws Exception
    70. {
    71. //由XMLReaderFactory类 创建XMLReader实例
    72. XMLReader xmlReader=XMLReaderFactory.createXMLReader();
    73. //创建一事件监听类
    74. JAXBSAXDemo handler=new JAXBSAXDemo();
    75. //XMLReader解析类设定事件处理类
    76. xmlReader.setContentHandler(handler);
    77. //XMLReader解析类解析XML文件
    78. xmlReader.parse("E:\\users.xml");
    79. }
    80. }

    上述代码中介绍了用 SAX 解析 XML 文件的步骤。通过上述代码可以看出,使用 SAX 解析 XML 时,需要以下几个步骤:

    • 用 XMLReaderFactory 类创建 XMLReader 实例:
    1. XMLReader xml Reader=XMLReaderFactory. createXMLReader();
    • 创建一个事件监听类:
    1. JAXBSAXDemo handler=new JAXBSAXDemo();
    • 为解析类设定事件处理类:
    1. xmlReader.setContentHandler(handler);
    • 解析XML文件:
    1. xmlReader. parse ("E:\users.xml");

    提示:上述实例中应用的是 XMLReader 而不是 SAXParser,是因为在 SAX2 中实现解析的接口名称重命名为 XMLReader。在使用 SAX 解析 XML 资源文件时,默认使用 SAXParser 实现类,它继承自 AbstractSAXParser。同理,工厂类也是使用 XMLReaderFactory 而不只 ISASParserFactory 来创建解析类。