EchoDemo's Blogs

Java中的XML

1、XML定义

(1)XML指可扩展标记语言(Extensible Markup Language),适合Web传输,类似HTML,不同的是它的设计宗旨是传输数据,而非显示数据。

(2)XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。XML标签没有被预定义,开发者根据需要自行定义标签。XML被设计为具有自我描述性,是W3C的推荐标准。

2、XML文档结构

(1)XML声明:<?xml version=”1.0” encoding=”UTF-8”?>

(2)XML根元素定义:XML文档的树形结构要求必须有一个根元素。根元素的起始标记要放在所有其他元素起始标记之前,根元素的结束标记放在其他元素的结束标记之后。

(3)XML元素:元素的基本结构由开始标记,数据内容,结束标记组成。

3、XML语法规则

(1)所有XML元素都须有关闭标签。

(2)XML标签对大小写敏感。

(3)XML必须正确地嵌套。

(4)XML文档必须有根元素。

(5)XML的属性以名值对方式组成,值须加引号。

(6)XML可编写注释。

(7)在XML中,空格会被保留,文档中的空格不会被删节。

4、举例说明

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book bookno="001">
        <title>Java语言编程</title>
        <author>张三</author>
        <price>80</price>
    </book>
    .
    .
    .
</bookstore>

5、XML SAX解析器

(1)SAX(Simple API For XML)是一个公共的基于事件的XML文档解析标准,能够通过一个简单的、快速的方法来对XML文档进行处理,和DOM相比它所占用的系统资源更少。

(2)SAX既是一个接口,也是一个软件包。作为接口,SAX是事件驱动型XML解析的一个标准接口,对文档进行顺序扫描,当扫描到文档(document)开始、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。

6、SAX解析器API

(1)事件类型,大多数的SAX会产生以下类型的事件:

1)在文档的开始时和结束时触发文档处理事件。

2)在文档内每一XML元素接受解析的前后触发元素事件。

3)任何的元数据通常由单独的事件处理。

(2)举例说明

<doc>
    <para>Hello,iotek!</para>
<doc>

其解析过程为:

1)start document;

2)start element:doc;

3)start element.para;

4)characters:Hello,iotek!;

5)end element:para;

6)end element:doc;

7)end document;

(3)解析步骤

1)创建事件处理程序(即编写ContentHandler的实现类,一般继承自DefaultHandler类,采用adapter模式)

2)创建SAX解析器

3)将事件处理程序分配到解析器。

4)对文档进行解析,将每个事件发送至事件处理程序。

(4)常用接口:ContentHandler接口

1)ContentHandler是Java类包中一个特殊的SAX接口。该接口封装了一些对事件处理的方法,当XML解析器开始解析XML输入文档时,他会遇到某些特殊的事件,比如文档的开头和结束、元素开头和结束、以及元素中的字符数据等事件。当遇到这些事件时,XML解析器会调用ContentHandler接口中相应的方法(回调方法)来响应该事件。

2)ContentHandler接口常用方法:

void startDocument();//文档解析开始的处理。

void endDocument();//文档解析结束的处理。

void startElement(String uri,String localName,String qName,Attributes atts);//ElementNode开始的处理。

void endElement(String uri,String localName,String qName);//ElementNode结束的处理。

void character(char[] ch,int start,int length);//具体在某一节点中的处理。
🐶 您的支持将鼓励我继续创作 🐶
-------------本文结束感谢您的阅读-------------