《第9章XML数据操作接口.ppt》由会员分享,可在线阅读,更多相关《第9章XML数据操作接口.ppt(49页珍藏版)》请在三一办公上搜索。
1、第9章 XML数据操作接口,9,内容提要,可扩展标记语言(eXtensible Markup Language,XML)是目前应用开发领域中的热门技术。本章主要讲述XML基本概念,XML的三种显示样式:CSS(Cascading Style Sheet,层叠式样式表单)、XSL(Extensible Style Language,扩展的标记语言)和Data Island(数据岛)如何利用JSP操作XML文件。,XML的概念,XML即可扩展的标记语言,可以定义语义标记,是元标记语言。XML不像超文本标记语言HTML,HTML只能使用规定的标记,对于XML,用户可以定义自己需要的标记。XML(eX
2、tensible Markup Language)和HTML(Hyper Text Markup Language)师出同门,都是从SGML(Standard Generalized Markup Language)延伸而出的标记语言,XML文档的结构,案例名称:元标记语言程序名称:9-01.xmlzhourunfamaleTeacher Peking Univ.,定义基本元素,案例名称:定义基本元素程序名称:9-02.xml周润发北京大学计算机系老师2000,使用属性,案例名称:添加属性程序名称:9-03.xml周润发北京大学计算机系教师2000,典型的XML文档结构,案例名称:典型的XML
3、文档结构程序名称:9-04.xml周润发教师 None 唱歌、跳舞,XML声明,XML声明是以“XML声明的作用是告诉浏览器将要处理的文档是XML文件。一个XML文档最好是以一个XML声明作为开始。之所以说“最好”是因为XML声明在XML文档中是可选内容,可加可不加,但XML标准强烈推荐加入这一行声明。XML声明中可以包含version,encoding和standalone三个属性。,字符和实体引用,字符和实体引用可以向XML文档中引入其他信息,而不需要直接在文档中输入它们。字符和实体引用通常用于以下情况。(1)字符不能直接出现在文档中,因为它们会被解释为标记。(2)由于输入设备的限制,字符
4、不能直接输入到文档中。(3)由于单字节字符的限制,字符不能可靠地经过处理程序。(4)相同的字符串或文档片断在文档中多次使用。,XML常用的实体引用,使用特殊字符,案例名称:使用特殊字符程序名称:9-05.xml北京大学教师2000,XML的三种显示格式,显示XML文件常见的有三种方式:使用CSS样式表使用XSL样式单使用XML的数据岛技术,CSS样式表,案例名称:CSS样式表程序名称:9-06.cssGREETING font-size:48pt;font-weight:bold;,案例名称:调用CSS的XML文件程序名称:9-07.xmlChina,XSL样式语言,案例名称:调用XSL的XM
5、L文件程序名称:9-08.xml,案例名称:XSL文件程序名称:9-09.xsl,XML数据岛技术,案例名称:使用XML文件数据岛程序名称:9-10.htm,XML的两种语法规则,在XML文档规则方面,目前有两种:W3C的DTD技术微软公司Scema技术,DTD文档类型定义,为文档类型定义(Document Type Definition),简称DTD。DTD可以包含在XML文档中,也可以独立为一个文件。根据DTD定义的位置,可以分成内部DTD和外部DTD 内部DTD,案例名称:内部DTD程序名称:9-13.xml,外部DTD,案例名称:外部DTD程序名称:9-15.DTD,案例名称:外部DT
6、D程序名称:9-16.xml,Schema文档规则,案例名称:使用Schema程序名称:9-18.xml hello,案例名称:使用Schema程序名称:9-17.xml,字符集概述,常见的字符集包括:ASCII字符集、ISO8859字符集、Unicode字符集合、UCS字符集和常用的中文字符集:GB2312、GBK和Big5,ASCII字符集,ASCII码的全称是American Standard Code for Information Interchange(美国标准信息交换码),它是一种单字节的7位二进制编码。在ASCII码字符集中,每个数字,字母或特殊字符都对应于一个7位二进制数,这
7、个7位二进制数是以一个字节(8位)来表示的(其中最高位为0)。从而定义了书写英语所需要的全部字符以及部分控制字符。由于ASCII码的最高位为0,因此,在ASCII码字符集中一共定义了128(27)个字符编码,所定义的这些字符的编码都在0-127之间。,ISO 8859字符集,ASCII码在定义之初只是为了表示英语(更严格来说是美式英语),对于象、等其他语言或地区所需要的字符则没有定义其表示方式。随着计算机应用的扩展,人们对其他字符表示的需求越来越迫切。1987年,国际标准组织ISO(International Organization for Standardization)发布了字符集标准:
8、ISO8859-1字符集。ISO8859-1通常也被叫做Latin-1字符集。Latin-1字符集在ASCII码的基础上增加了对西欧语言的支持。ISO8859字符集是单字节的8位二进制编码字符集,一共定义了256(28)个字符编码,其中,0-127之间的字符与ASCII码的定义相同,128-255之间的字符则是为了提供对其他语言的支持而对ASCII码进行的扩充。除了ISO 8859-1,ISO 8859标准中还定义了10个用于不同文字的字符集(8859-2到8859-10以及8859-15),另外还有4个字符集(8859-11到8859-14)正在开发过程中,Unicode字符集,Unicod
9、e是由美国各大电脑厂商所组成的Unicode协会创建的。其目的在于推广一个统一的编码方案,将世界上所有的常用文字都包含进去。它涵盖了美国、欧洲、中东、非洲、印度、亚洲和太平洋等地区的绝大多数语言。Unicode在创建之初希望能够方便地交换、处理和显示多种文字,就象数学符号一样地通用。它希望能够解决使用多种字符标准的计算机国际化问题为了将成千上万的文字统一到同一个编码机制之下,在兼顾经济的原则下,不管是东方文字还是西方文字,在Unicode中一律用两个字节来表示。也就是说,Unicode是一种双字节编码机制的字符集,使用0-65535之间的双字节无符号整数对每个字符进行编码。这样,在Unicod
10、e字符集中,至少可以定义65536个不同的字符,足以应付目前绝大多数场合的需要。,中文字符集,中文简体和繁体,常用的字符集有三种:GB2312、GBK和Big5,GB2312字符集,GB码的全称是GB2312-80信息交换用汉字编码字符集 基本集,1980年发布,是中文信息处理的国家标准,在中国大陆及海外使用简体中文的地区(如新加坡等)是强制使用的唯一中文编码。P-Windows3.2和苹果OS就是以GB2312为基本汉字编码的,Windows 95/98则以GBK为基本汉字编码,但兼容支持GB2312。GB码共收录了6763个简体汉字、682个符号。其中,汉字部分:一级字3755个,以拼音排
11、序;二级字3008个,以偏旁排序。该标准的制定和应用为规范、推动中文信息化进程起了很大作用。,GBK字符集,GBK编码是中国大陆制订的、等同于UCS的新的中文编码扩展国家标准。GBK工作小组于1995年12月完成的GBK规范。该编码标准兼容GB2312,共收录了汉字21003个、符号883个,并提供了1894个造字码位,简、繁体字融于一库。,BIG5字符集,BIG5编码是由台湾制定的、目前在台湾、香港地区普遍使用的一种繁体汉字的编码标准,包括符号440个,一级汉字5401个、二级汉字7652个,共计13060个汉字。,UTF-8字符集,UTF是Unicode/UCS Transformatio
12、n Format的缩写。由于Unicode/UCS 使用多字节表示一个字符,因此使用Unicode/UCS的英文文本文件比使用ASCII码或Latin-1码的文件要大得多,因此出现了压缩版本的Unicode/UCS:UTF-8。,UTF-16字符集,UTF-16也是ISO/IEC 10646-1和Unicode的变形表示方式的一种。它的目的是维持双八位的编码方式,同时也用一些特殊的双八位来表示非基本多文种平面(BMP)中的一些字符。这种用来表示非BMP字符的方法在Unicode中称作代理对机制。ISO 10646 使用四个字节来编码,因此要应付未来的扩充需求可以说是绰绰有余。相对地,Unico
13、de 只用两个字节,不但空间很容易用尽,而且如果要在未来继续和ISO 10646 保持兼容,需要用一种机制来弥补两个字节的不足。代理对(surrogate pairs)的设计便在这个背景下应运而生。,在XML中使用HTML,案例名称:使用HTML标记程序名称:9-19.xml Tom male,在XML中使用JavaScript代码,案例名称:使用JavaScript标记程序名称:9-20.xml,XML的三种应用程序接口,在Java中对XML的解析接口有3大类:基于DOM(Document Object Model)的解析接口基于SAX(Simple API for XML)的解析接口基于J
14、DOM(Java Document Object Model)技术的解析接口,解析接口,DOM即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成了一个对象模型的集合(这个集合通常被称为DOM树),应用程序可以通过对该对象模型的操作,实现对XML文档中数据的操作。SAX即XML简单应用程序接口。SAX提供了一种对XML文档进行顺序访问的模式,这是一种快速读写XML数据的方式。当使用SAX分析器对XML文档进行分析时,会触发一系列事件,并激活相应的事件处理函数,从而完成对XML文档的访问,所以SAX接口也被称作事件驱动接口。JDOM的处理方式是与DOM类似的操作。是SUN
15、公司发布的一种简单方便的XML处理接口。,解析器,解析器实际上就是一段代码,它读入一个XML文档并分析其结构。我们在这里介绍的是基于Java的解析器。目前主流的解析器有:JAXP(Java API for XML Processing)、Xerces(Apache)、XML4J(IBM)和xalan等,主流的解析器都支持SAX和DOM。支持JDOM的解析器目前只有SUN公司发布的jdom包。,DOM解析接口,案例名称:DOM树结构程序名称:9-21.xml 张三 李四,DOM读取XML文件,第一步:建立一个解析器工厂。DocumentBuilderFactory dbf=DocumentBui
16、lderFactory.newInstance();第二步:以利用这个工厂来获得一个具体的解析器对象。DocumentBuilder builder=dbf.newDocumentBuilder();第三步:利用DocumentBuilder的parse()方法接受一个XML文档名作为输入参数,返回一个Document对象。Document对象代表了一个XML文档的树模型。Document doc=builder.parse(candidate.xml);第四步:使用Document对象的getElementsByTagName()方法,我们可以得到一个NodeList对象,它是XML文档中的
17、标签元素列表,可以使用NodeList对象的item()方法来得到列表中的每一个Node对象。NodeList nl=doc.getElementsByTagName(PERSON);Element node=(Element)nl.item(i);第五步:通过Node对象的getNodeValue()方法提取某个标签内的内容。node.getElementsByTagName(NAME).item(0).getFirstChild().getNodeValue(),JSP使用DOM读取XML文件,案例名称:JSP使用DOM读取XML文件程序名称:9-22.jsp,JSP使用DOM创建XML节
18、点,案例名称:JSP使用DOM创建XML节点程序名称:9-23.jsp,SAX解析接口,SAX是一种轻量型的方法。在处理DOM的时候,需要读入整个的XML文档,然后在内存中创建DOM树,生成DOM树上的每个Node对象。当文档比较小的时候,这不会造成什么问题,但是一旦文档变大,处理DOM就会变得相当费时费力。特别是其对于内存的需求,将是成倍的增长,以至于在某些应用中使用DOM是一件很不经济的事,一个较好的替代解决方法就是SAX。,SAX读取XML文件,SAX解析器工作的过程至少包含3步。第一步:和DOM一样,需要建立一个解析器工厂。SAXParserFactory spf=SAXParserF
19、actory.newInstance();第二步,创建一个解析器对象。SAXParser saxParser=spf.newSAXParser();第三步,将解析器和XML文档联系起来,开始解析。saxParser.parse(new File(filename),new sax();,案例名称:使用SAX对XML文件进行解析程序名称:9-23.java,JDOM解析接口,JDOM设计者的目标是:“Java+XML=JDOM”。2002年的JavaOne会议上JDOM的主要创始人Jason Hunter有一篇精彩的演讲介绍了JDOM技术,题目就是“JDOM Makes XML Easy”在那篇
20、文档里,JDOM被拿来与DOM比较,JDOM是为了在Java中提供比DOM和SAX更为方便的XML处理接口而开发的。在http:/jdom.org可以下载JDOM的最新版本。JDOM的jar文件是jdom.jar。,JDOM对象,JDOM的处理方式有些类似于DOM,但它主要是用SAX实现的,不必担心处理速度和内存的问题。另外,JDOM中几乎没有接口,全部是类,主要的类有:Attribute(属性)、CDATA(内容)、Comment(注释)、Document(文档)、Element(元素)Namespace(命名空间)、ProcessingInstruction(处理指令)和Text(文本),
21、使用JDOM读取XML文件,案例名称:使用JDOM读取XML文件程序名称:9-24.jsp,使用JDOM读取XML字符串,案例名称:使用JDOM读取XML字符串程序名称:9-25.jsp,使用JDOM读取XML的属性,案例名称:使用JDOM读取XML的属性程序名称:9-26.jsp,小结,可扩展标记语言(eXtensible Markup Language,XML)是目前应用开发领域中的热门技术。本章主要讲述XML基本概念,XML的三种显示样式:CSS(Cascading Style Sheet,层叠式样式表单)、XSL(Extensible Style Language,扩展的标记语言)和Data Island(数据岛)如何利用JSP操作XML文件。,本章习题,9-1.简述XML和HTML的区别与联系。9-2.XML文档由哪些部分组成?各有什么作用?如何在XML文件中输出大于号?9-3.XML文件如何调用CSS样式文件?如何调用XSL样式文件?如何使用XML数据岛技术?9-4.简述常用的三种中文字符集。9-5.名词解释:DOM SAX JDOM(企业笔试题)9-6 名词解释:Xerces xalan(企业笔试题)9-7 利用三种方法读取9-01.xml文件。(上机完成),