第9章 JSP中使用XML

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

•XML声明
XML声明中的版本属性
一个简单的XML声明中可以只包含属性version,目前该属性的只可以值 可以取1.0,指出该XML文件使用的XML版本。
XML声明中的编码属性
如果在XML声明中没有指定encoding属性的值,那么该属性的默认值是 “UTF-8”。例如: <?xml version="1.0" encoding="UTF-8" ?> 如果encoding属性的值为“UTF-8”,XML文件必须选择“UTF-8”编码来 保存 .
•使用SAX解析器的基本步骤
1.SAXParserFactory对象
使用javax.xml.parsers包中的SAXParserFactory类调用其类方法 newInstance()实例化一个SAXParserFactory对象,如:
SAXParserFactory factory=SAXParserFactory.newInstance() ;
DTD中的<!ELEMENT>元素用来约束XML文件中的标记,在DTD中使 用元素声明来定义一个<!ELEMENT>元素,元素的声明格式为:
<!ELEMENT 标记名称 标记的约束条件 > 例如: <!ELEMENT 列车时刻表 (T28次,T678次) > 约束标记“列车时刻表” 只可以有且必须有两个子标记“T28次”
针对某些问题,有时可能需要对XML文件怎样 组织数据,即数据之结构,进行必要的限制, 以便解析器能更好地解析其中的数据。对XML 的数据结构进行限制的传统常用方式是使用 文档类型定义 (Document Type Definition , DTD)。
•DTD文档
DTD 文 档 是 由 <!ELEMENT> 元 素 组 成 的 文 本 文 件 , 其 扩 展 名 为 “.dtd”。
</T876> </列车时刻表>
1.规范的XML
规范的XML文件应当用“XML声明”开始、文件有 当且仅有一个根标记,其它标记都必须封装在根标 记中,文件的标记必须是树型结构、非空标记必须 由“开始标记”与“结束标记”组成、空标记没有 “开始标记”和“结束标记”等等。
W3C吸取了HTML发展的教训,对XML指定了严格的语 法标准。为了检查XML文件是否规范,一个简单的 办法就是用浏览器,比如IE5.5,打开XML文件,如 果XML是规范的,浏览器将显示XML源文件,否则, 将显示出错信息。
如果有多个标记的内容需要有完全一样方式来显示,“文本代表”也可以是这些标 记的名称用逗号分隔的字符串。如:
name,sex,birthday
{
display:block;font-size:36pt;font-weight:bold;
}
一个层叠样式表(CSS)就是由若干个样式表组成的文本文件(扩展名为.css),该 文本文件可以使用“ANSI”或“UTF-8”编码来保存。
</math>
<chemistry> 几个化合物分子式: <molecular> 水的分子式: H<low>2</low>O </molecular> <molecular> 二氧化硫的分子式: SO<low>2</low> </molecular>
SAXParser对象(SAX解析器)
SAXParserFactory对象调用newSAXParser()方法返回一个SAXParser对象,称之为SAX解析 器,如: SAXParser saxParser=factory.newSAXParser();
saxParser 对 象 调 用 public void parse(File f,DefaultHandler dh) 方 法 解析参数f指定的XML文件。
2.factory对象调用newDocumentBuilder()方法返回一个DocumentBuilder 对象(称做DOM解析器),例如: DocumentBuilder builder=factory. newDocumentBuilder();
DocumentBuilder 类在javax.xml.parsers包中。 3.builder对象调用public Document parse(File f)方法解析参数f指定
和“T678次”。
•XML与DTD关联
XML文件使用文档类型声明与一个DTD相关联,即遵守该DTD文件规 定的限制条件。有两种形式的关联:SYSTEM和PUBLIC,SYSTEM关 联表明所关联的DTD文件由个人或工作小组所定义且认可;PUBLIC关 联表明所关联的DTD文件已经得到某一领域的认可,是经过许多人讨论 得到认可的DTD文件。
非空标记
非空标记必须由“开始标记”与“结束标记”组成,“开始标记”与“结束标 记”之间是该标记所标记的内容。例如:
<名称>电视</名称>
3.有效的XML
规范性仅仅是XML语言的基本语法,没有对 XML文件怎样组织数据进行具体的限制,对同 一问题编写的XML文件,在数据组织结构上就 可能有很大的不同 .
•使用DOM解析器的基本步骤
1.使用javax.xml.parsers包中的DocumentBuilderFactory类调用其类方法 newInstance()实例化一个DocumentBuilderFactory对象:
DocumentБайду номын сангаасuilderFactory factory= DocumentBuilderFactory. newInstance();
<Java实用教程> 第2版
配合<Java实用教程>第2版 例子源代码一起使用
第9章 JSP中使用XML
XML是eXtensible Markup Language 缩写,称 之为可扩展标记语言。所谓可扩展性是指XML 允许用户按着XML规则自定义标记。XML文件 是由标记及其所标记的内容构成的文本文件, 与HTML文件不同的是,这些标记可自由定义, 其目的是使得XML文件能够很好地体现数据的 结构和含义。W3C推出XML的主要目的是使得 Internet 网 络 上 的 数 据 相 互 交 流 更 方 便 , 让 文件的内容更加显而易懂。
在CSS中,最重要的概念就是样式表。样式表是一组规则,通过这组规则 告诉浏览器用什么样式来显示文本,比如,告诉浏览器使用什么样的字 体、颜色和页边距来显示文本。一个样式表的格式如下:
文本代表
{ 样式规则
}
对于XML文件,样式表中的“文本代表”可以是标记的名称。样式表中的 “样式规则”是若干个用分号分隔的“属性名:属性值”,例如:
•SAX解析器的工作原理
SAX解析器调用parse方法(见9.4.1中的 步骤3)解析XML文件,parse方法的第2 个参数dh是DefaultHandler类型,称作事 件处理器。parse方法在解析XML文件的 过程中,根据从文件中解析出的的数据 产生相应的事件,并报告这个事件个给 事件处理器dh,事件处理器dh就会处理 所发现的数据,即处理器dh会根据相应 的事件调用相应的方法来处理数据, parse方法必须等待事件处理器处理完毕 后再继续解析文件、报告下一个事件。
的文件,并返回一个实现了Document接口的实例,该实例被称做Document对 象。例如: Document document= builder. parse(new File("price.xml")) ;
5. SAX解析器
SAX解析器不在内存中建立和XML文件相 对应的树形结构数据,SAX解析器的核心 是事件处理机制,和DOM解析器相比, SAX解析器占有的内存少,对于许多应用 程序,使用SAX解析器来获取XML数据具 有较高的效率。
简单的XML文件:
<?xml version="1.0" encoding="UTF-8" ?> <列车时刻表>
<T28> <开车时间>20点58分</开车时间> <终到时间>08点18分</终到时间> </T28> <T876> <开车时间>23点12分</开车时间> <终到时间>07点25分</终到时间>
6. XML与CSS
W3C为显示XML中所有标记所含 有的文本发布了一个建议规范: CSS(层叠样式表)。本节介绍 CSS中的基本内容,如果需要了 解细节可参见有关书籍,比如, 作者的另一本教材:《XML基础 教程》(清华大学出版社)。
•使用CSS
为了让XML使用层叠样式表显示其中的文 本数据,XML文件必须使用操作指令
•标记
根标记
XML文件必须有且仅有一个根标记,其它标记都必须封装在根标记中,形成树型 结构。
空标记
所谓空标记就是不标记任何内容的标记。由于空标记不标记任何内容,所以空标 记不需要开始标记和结束标记,空标记以 “<”标识开始,用“/>” 标识结束 . 例如: <chair width="24" height="12" />
•显示数学公式和化合物分子式
1.JSP页面:type.jsp (JSP页面使用超链 接请求XML文件:formula.xm )
<%@ page contentType="text/html;charset=GB2312" %> <HTML><BODY bgcolor=yellow > <BR>显示几个数学公式和化合物分子式: <A href="formula.xml">显示</A> </BODY></HTML>
SYSTEM关联型的文档类型声明格式: <DOCTYPE 根标记的名称 SYSTEM "DTD文件的URI"> 例如:
<!DOCTYPE 列车时刻表 SYSTEM "Control.dtd"> PUBLIC关联型的文档类型声明格式: <DOCTYPE根标记的名称 PUBLIC "正式公用标识符" "DTD文件的URI"> 例如: <!DOCTYPE 列车时刻表 PUBLIC "-//ISO123456/Daxian/ForXML/EN" "
<?xml-stylesheet href ="样式表的URI" type= "text/css" ?>
将当前XML文件关联到某个层叠样式表, 样式表的URI如果是一个文件的名字,该 文件必须和XML文件在同一目录中,例如:
<?xml-stylesheet href="show.css" type="text/css" ?>
Control.dtd">
4. DOM解析器
DOM(Document Object Model,文档对象模 型)是W3C制定的一套规范标准。DOM规范的 核心是按树型结构处理数据。简单地说,DOM 解析器必须按着DOM规范在内存中按树型结构 组织数据,DOM解析器通过读入XML文件在内 存中建立一个“树”,也就是说XML文件的标 记、标记的文本内容都会和内存中“树”的 某个节点相对应。一个应用程可以方便地操 作内存中“树”的节点来处理XML文档,获取 自己所需要的数据。
2.XML文件 (formula.xml描述
常用的数学公式和化合物的分 子式 )
<?xml version="1.0" encoding="UTF-8" ?> <?xml-stylesheet href="show.css" type="text/css" ?> <root>
<math> 几个数学公式: <formula> 平方和公式: (A+B)<sup>2</sup>= A<sup>2</sup>+2AB+B<sup>2</sup> </formula> <formula> 立方和公式: (A+B+C)<sup>3</sup>= A<sup>3</sup>+3A<sup>2</sup>B+3B<sup>2</sup>A<sup>2</sup>+A<sup>3</sup> </formula>
name
{ display:block;font-size:36pt;font-weight:bold;
}
样式表用来显示标记“name”的文本内容,其中的“display:block;”告 知浏览器将标记“<name>…</name>所标记的文本内容显示在一个“块区域”;
“font-size:36pt;”能使得文本字体的大小是36镑;“font-weight:bold”的作 用是让文本加重显示。
相关文档
最新文档