版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
XML是W3C发布的一种新的标准,它同HTML一样是SGML的一个简化子集。由于XML将SGML的丰富功能、可扩展性与HTML的易用性结合到了Web的应用中,自推出以来迅速得到软件开发商的支持和程序开发人员的喜爱,显示出了强大的生命力。本章主要介绍XML的基本概念和使用方法。
XML是eXtensibleMarkupLanguage的缩写,翻译成中文就是可扩展标记语言。XML是由W3C(WorldWideWebConsortium,万维网协会)于1998年2月发布的一种标准,它同HTML一样是SGML(StandardGeneralizedMarkupLanguage,标准通用标记语言)的一个简化子集。在正式的XML规范1.0中将XML描述为:“可扩展标记语言(XML)是SGML的子集,其目标是允许普通的SGML在Web上以目前HTML的方式被服务、接收和处理。”11.1XML概述所谓可扩展性是指XML允许用户按照XML规则自定义标记。
XML文件是由标记及其所标记的内容构成的文本文件。与HTML不同的是,XML的标记可自由定义,其目的是使得XML文件能够很好地体现数据的结构和含义。因此,XML被设计成易于实现,且可在SGML和HTML之间互相操作。Web技术的发展,其丰富的信息资源给人们的学习和生活带来了极大的便利。由于HTML具有简单易学、灵活通用的特性,使人们在Internet上检索、发布、交流信息变得非常简单。然而,随着电子商务、远程教育等新兴的Web领域的全面兴起,传统的HTML由于自身特点的限制,逐渐暴露出下述问题。(1)
HTML作为一种简单的表示性语言,只能显示内容而无法表达数据内容的结构。例如:若用HTML标记描述“书名:面向对象程序设计——Java;作者:张白一,崔尚森;出版社:西安电子科技大学出版社,出版时间:2006年1月”之间的逻辑关系是不可能的。HTML标题标记只标记标题文本本身,例如<H2>XML文档</H2>,因为没有在标题标记中嵌套一个属于文档部分的实际文本和标记,所以这些标记不能用来组成树型分层结构的文档,来体现数据之间的逻辑关系和继承关系。而这一点恰恰是电子商务、远程教育等所必需的。(2)
HTML缺乏描述矢量图形、算术公式、化学公式等特殊标记对象。
(3)最重要的是HTML只是SGML的一个实例化的子集,它的可扩展性差,用户根本不能自定义有意义的标记供他人使用。
这一切都成为Web技术进一步发展的障碍。虽然SGML是一种通用的文档结构描述标记语言,为语法标记提供了异常强大的工具,同时具有极好的扩展性,因此在数据分类和索引中非常有用。但SGML的复杂度太高,不适合网络的日常应用,加上开发成本高、不被主流浏览器所支持等原因,使得SGML在Web上的推广受到阻碍。在这种情况下,开发一种兼具SGML的强大功能、可扩展性以及HTML的简单性的语言势在必行,由此诞生了XML语言。XML的主要设计目标是在Web上保存并传递信息。HTML是描述数据显示的语言,而XML是描述数据及其结构的语言。XML具有下述特点:
(1)
XML描述数据的结构性较强。XML文档具有类似树型的分层结构,XML文档只有单个根标记,它包含了所有其它标记。一个标记可以嵌套在另一个XML标记中,因此,可以很容易地使用XML定义分层结构文档。
(2)
XML文档更便于阅读。由于XML文档是用纯文本编写的,而且具有类似树型的逻辑结构,所以人们很容易阅读,并且可以通过为文档标记、属性和实体选择有意义的名字,并且增加有用的注释来增强XML的可读性。(3)
XML文档具有开放式标准。众多公司支持W3C,改进的XML标准支持各式系统和浏览器上的开发人员和用户使用XML文档。XML解释器可以使用编程的方法来载入一个XML的文档,当这个文档被载入以后,用户就可以通过XML文件对象模型来获取和操纵整个文档的信息。(4)XML文档档具有国际际化标准。。XML依依靠它的统统一代码的的新的编码码标准,支支持世界上上所有主要要以语言编编写的混合合文本。在在HTML中,就大大多数字处处理而言,,一个文档档一般是用用一种特殊殊语言写成成的,如果果用户的软软件不能阅阅读特殊语语言的字符符,那么他他就不能使使用该文档档。但是能能阅读XML语言的的软件就能能顺利处理理这些不同同语言文字字。XML及相关技技术规范符符号的任意意组合,使使得XML不仅能在在不同的计计算机系统统之间交换换信息,而而且能跨国国界和超越越不同文化化疆界交换换信息。(5)XML高效效且可扩充充性强。它它支持复用用文档片断断,使用者者可以设计计和使用自自己的标签签,也可与与他人共享享。在XML中可以以定义许多多标记。XML提供供了独立的的运用程序序的方法来来共享数据据。XML文件件的扩展名名必须为““.xml”。例如如,“a.xml””、“b1.xml”都是合合法的XML文件名名。编编写XML文档,,必须遵守守XML规规范中的语语法规则。。无论是从从物理结构构上讲,还还是从逻辑辑结构上讲讲,XML都必须符符合规范才才能被正确确解释处理理。11.2XML语法11.2.1XML文档档结构XML文档档的定义由由框架语法法组成。当当编写一个个XML文文档时,可可以创建自自己的标记记,并赋予予任意的名名称。这就就是XML(ExtensibleMarkupLanguage,,可扩展标标记语言)中术语““Extensible”的的意义。例例如,下面面是一个描描述书籍信信息的XML文档。。【示例文档档c11_1.xml】一个个简单的XML文档档。<?xmlversion="1.0"encoding="GB2312"?><!--xml文档名名为c11_1.xml--><目录><书><书名名>面向对对象程序设设计——Java</书名名><作者>张白一,,崔尚森</作者><出版社>西安电子子科技大学学出版社</出版社社><价格>26.00</价价格><出版版日期>2006年年1月</出版日期期></书><书书><书名>JSP实实用案例教教程</书名><作作者>冯燕燕奎,赵德德奎等</作者><出版社>清华大学学出版社</出版社社><价格>35.00</价价格><出版版日期>2004年年5月</出版日期期></书></目录>XML文档档主要由序序言和文档档根标记两两个主要部部分组成。。序言中包包含XML声明、处处理指令和和注释。在在文档根标标记中可以以嵌入多个个标记。如如果直接用用IE浏览览器打开XML文件件,则显示示成如图11.1所所示的默认认树型结构构。图11.1c11.xml的运行行结果11.2.2XML声明明当开始着手手写一个XML文件件时,最好好以一个““XML声声明”作为为开始。之之所以说““最好”,,是因为XML声明明在文件中中是可选内内容,可加加可不加,,但W3C推荐加入入这一行声声明。因此此,作为一一个良好的的习惯,我我们通常把把XML声声明作为XML文件件的第一行行。它的作作用就是告告诉XML处理器::“下面这这个文件是是按照XML文件的的标准对数数据进行标标记的”。。XML声明明是以“<?xml”开始,,以“?>”结束的的。XML声明中可可以包含下下述三个属属性。1.version属性性在一个XML的声明明中必须包包括version属性指明明所采用的的XML的的版本号,,而且,它它必须在属属性列表中中排在第一一位。由于于当前的XML最新新版本是1.0,所所以我们看看到的无一一例外的都都是version="1.0",我我们在c11_1.xml中中也设定version="1.0"。虽然然在2002年10月15日日以候选推推荐标准(CandidateRecommendation)形式发发表了XML1.1版本,但但目前仍在在征求意见见之中。2.encoding属属性该属性指定定文档中使使用的字符符编码标准准。我们常常用的编码码有:(1)GB2312或GBK:简体体中文编码码。(2)UTF-8:压缩的的Unicode编编码。(3)BIG5::繁体中文文编码。如如果果没有声明明encoding属性,那那么该属性性默认为UTF-8编码。保保存XML文档时要要注意。3.standalone属性该属性可以以取值“yes”或或“no””,以说明明XML文文件是否和和一个外部部文档(独独立的标记记声明文件件)配套使使用。“yes”表表示与外部部文件无关关联。11.2.3XML元素素元素是XML文件内内容的基本本单元。从从语法上讲讲,一个元元素包含一一个起始标标记、一个个结束标记记以及标记记之间的数数据内容。。其使用形形式如下::<标记>数据内容容</标记记>例例如,在在c11_1.xml文件中中的一个元元素是:<书书名>面向向对象程序序设计———Java</书名名>元元素中还还可以再嵌嵌套别的元元素。例子子c11_1.xml中的元元素<目录录>中就嵌嵌套了元素素<书>,,而元素<书>中又又嵌套了<书名>、、<作者>等元素。。其中<目目录>元素素包含了文文件中所有有的数据信信息,称之之为根元素素。<书>、<书名名>、<作作者>等这这些元素称称为XML的标记。。11.2.4XML元素素基本语法法规则(1)标标记必不可可少。任何何一个形式式良好的XML文件件中至少要要有一个元元素。也就就是说,标标记在XML文件中中是必不可可少的。(2)区分分大小写。。在标记中中必须注意意区分大小小写。在HTML中中,标记<table>和<TABLE>是一一回事,但但在XML中,它们们是两个截截然不同的的标记。(3)要要有正确的的结束标记记。结束标标记除了要要和开始标标记在拼写写和大小写写上完全相相同之外,,还必须在在前面加上上一个斜杠杠“/”。。因此,如如果开始标标记是<TABLE>,则结结束标记应应该写作</TABLE>。。(4)标标记要严格格配对。例例如,HTML中的的<BR>、<HR>等单边边标记在XML中是是不合法的的。(5)空空元素标记记。空标记记就是没有有任何数据据内容的元元素。空元元素的语法法格式如下下:<标记名名></标标记名>或或<标记名名/><标记记名属性性列表></标记名名>或或<标标记名属属性列表/>例例如:<价价格></价格>或或<价价格26.00/><姓姓名></姓名>或或<姓姓名张张三/>(6)非非空元素就就是有任何何数据内容容的元素。。非空元素素的语法格格式如下::<标记名>数据内容容</标记记名>例例如::<书名>面面向对象程程序设计———Java</书书名>(7)标记要要正确嵌套套。在一个个XML元元素中允许许包含其它它XML元元素,但这这些元素之之间必须满满足嵌套性性。例如,,下面这么么写是错误误的:<书><书名>JAVA编编程入门</书></书名>(8)标标记命名要要合法。标标记应该以以字母、下下划线或冒冒号开头,,后面跟字字母、数字字、句号、、冒号、下下划线或连连字符,但但是中间不不能有空格格,而且任任何标记不不能以“xml”起起始。另外外,最好不不要在标记记的开头使使用冒号,,尽管它是是合法的,,但可能会会带来混淆淆。(9)有有效使用用属性。标标记中可以以包含任意意多个属性性。在标记记中,属性性以“名称称=取值””的形式出出现。名称称与取值之之间用等号号“=”分分隔,且取取值要用引引号引起来来。属性名名不能重复复。11.2.5XML的注注释在XML中中,注释是是以“<!--”开开头,以““-->””结束的,,这和HTML的注注释完全相相同。但是是,仍然有有以下几点点需要注意意:(1)在在注释文文本中不能能出现字符符“-”或或字符串““--”,,XML处处理器可能能把它们和和注释结尾尾标志“-->”相相混淆。(2)不要要把注释文文本放在标标记之中。。(3)注注释不能嵌嵌套。在使使用一对注注释符号表表示注释文文本时,要要保证其中中不再包含含另一对注注释符号。。(4)注注释文本只只能出现在在XML声声明之后。。标记(markup)是用来来描述文档档结构的定定界文本———即元素素的起始标标记、元素素的结束标标记、空元元素标记、、注释、文文档类型声声明、处理理指令、CDATA段定界符符、实体引引用和字符符引用等。。标记指出出了文档的的逻辑结构构,包含了了文档的信信息内容。。11.3根根标记记与特殊字字符11.3.1XML文档档的根标记记在XML文文档中有且且仅有一个个根标记,,其它标记记都必须嵌嵌套在根标标记之内。。在在c11_1.xml文件中中,根元素素是目录,,起始根标标记是<目目录>,结结束根标记记是</目目录>,其其内容是两两个嵌套的的书元素。。书元素的的起始标记记是<书>,结束标标记是</书>。每每个书元素素中又嵌套套五个元素素,分别是是:书名、、作者、出出版社、价价格及出版版日期。11.3.2数数据内容中中的特殊字字符元素是由标标记和数据据内容组成成的,在XML中有有五种特殊殊字符:左左尖括号““<”、右右尖括号““>”、与与符号“&”、单引引号“'””、双引号号“"”。。W3C制制定的规范范中规定::数据内容容中不能含含有特殊字字符。要想想使用这五五种字符,,可以通过过实体引用用。XML常用的实实体引用如如表11.1所示。。表11.1XML常用的的实体引用用注意:在XML中实实体引用以以“&”开开始,以““;”结束束。例例如,若若要输出““&<大学学毕业>””这样的内内容,就要要使用实体体引用。在在XML文文档中应该该写成:<张张三>1970年出生生&<大学毕毕业></张三三>解解释器解解释出该元元素的数据据是:1970年出生生&<大学学毕业>本节介绍XML文档档的三种显显示方式,,分别是::没有样式式表单的显显示方式;;使用CSS样式表表单的显示示方式;使使用XSL样式表单单的显示方方式。11.4显显示XML文档档内容11.4.1显显示没有样样式表的XML文档档如果XML文件没有有包含指向向一个样式式表的链接接,当直接接运行XML文件时时,IE浏浏览器只显显示如图11.1所所示的整个个文档的文文本,并用用不同的颜颜色来区分分文档的不不同组成部部分,以便便帮助我们们理解文档档的结构。。在在每个元素素的起始标标记的左边边有一个““-”号或或“+”号号。“-””号表示该该元素的内内容已全部部展开;““+”号表表示该元素素的内容已已收缩。单单击起始标标记左边的的“-”号号可以收缩缩元素,而而单击已收收缩元素旁旁边的“+”号可以以展开它。。例如,如如果单击第第一个元素素<书>旁旁边的“-”号,就就会看到如如图11.2所示的的内容。用用收缩和扩扩展树的形形式显示文文档元素,,可以清楚楚地指出文文档的逻辑辑结构,详详细地查看看各层。图11.2c11_1.xml收收缩元素运运行结果11.4.2显显示有CSS样式表表的XML文档CSS(层层叠样式表表)是一种种样式表描描述规则。。样式表是是用来定义义Web页页面格局的的模板,通通过样式表表可以定义义页面的标标头、页边边距、缩进进、字体大大小及各种种背景颜色色等,用以以完成Web页面的的风格设计计。1.CSS样式式的定义样式式的的定定义义由由一一个个标标记记的的名名称称和和定定义义这这个个标标记记的的显显示示方方式式的的属属性性列列表表组组成成。。属属性性包包括括属属性性名名和和属属性性值值,,其其间间使使用用冒冒号号分分开开,,同同时时各各种种不不同同的的属属性性以以分分号号分分开开。。属属性性的的使使用用格格式式如如下下::标记记名名{属属性性名名1::属属性性值值1;;属属性性名名2::属属性性值值2;;…………属属性性名名k::属属性性值值k;;}例例如如,,在在下下边边的的c11_2.css程程序序中中,,““font-size””、、““font-weight””是是属属性性名名,,““36pt””、、““bold””是是属属性性值值。。3.示示例例【示示例例文文档档c11_2.xml】】调调用用c11_2.css的的XML文文件件。。<?xmlversion="1.0"encoding="GB2312"?><?xml-stylesheettype="text/css"href="c11_2.css"?><!--xml文文档档程程序序名名为为c11_2.xml--><张张三三>1970年年出出生生&<大大学学毕毕业业></张张三三>【示示例例文文档档c11_2.css】】对对c11_2.xml中中的的标标记记““张张三三””定定义义显显示示样样式式,,定定义义的的字字体体大大小小为为36pt和和字字体体加加粗粗。。张张三三{font-size:36pt;font-weight:bold;}双双击击c11_2.xml文文件件,,运运行行结结果果如如图图11.3所所示示。。图11.3c11_2.xml的的运运行行结结果果11.4.3显显示示有有XSL样样式式表表的的XML文文档档CSS是是一一种种静静态态的的样样式式描描述述格格式式,,其其本本身身不不遵遵从从XML的的语语法法规规范范。。而而XSL(eXtensibleStylesheetLanguge,,可可扩扩展展样样式式语语言言)是是遵遵从从XML语语法法规规范范的的XML的的一一种种具具体体应应用用,,它它的的功功能能比比CSS强强大大得得多多。。1. XML变换的基基本步骤(1)在XML文件中中加入使用XSL的声明明。(2)在XSL文件中中建立XML文件的样式式表。(3)在在XSL文件件中将样式表表转换成HTML文件。。
XML变换的基基本步骤如图图11.4所所示。图11.4XML变变换的基本步步骤下面用示例来来说明。【【示例文文档c11_3.xml】一个简单单的XML文文档。<?xmlversion="1.0"encoding="GB2312"?><?xml-stylesheettype="text/xsl"href="c11_3.xsl"?><!--xml文档档程序名为c11_3.xml--><书><书名>面面向对象程序序设计——Java</书名><作者者>张白一,,崔尚森</作者></书>
【示示例文档c11_3.xsl】显示示c11_3.xml文文件的XSL样式表。<?xmlversion="1.0"encoding="GB2312"?>XML变换的的基本步骤是是:当浏览器器打开c11_3.xml文件时,,浏览器内部部的XSL处处理器,首先先进行XSL变换,将其其中的XSL标记<xsl:value-ofselect="书名"/><xsl:value-ofselect="作者"/>分分别转换为为
面向向对象程序设设计——Java张张白一,,崔尚森得得到一个个如下的HTML文件::
<HTML><BODY>面向对象程序序设计——Java<BR></BR>张张白一,,崔尚森</BODY></HTML>然然后执行该HTML文件件,显示如图图11.5所所示的结果。。图11.5c11_3.xml的运行结果果3. XSL样式表结结构XSL样式表表结构与XML相似,主主要由序言和和根标记两个个主要部分组组成,序言中中包含XSL声明、处理理指令和注释释。在根标记记中嵌入根模模板,根模板板中可嵌入多多个子模板。。直接用IE浏览器打开开XSL文件件,显示成默默认的树型结结构。下面以以文档c11-3.xsl为例说明明其结构。(1)序言言部分。程程序中的的序言部分为为
<?xmlversion="1.0"encoding="GB2312"?>这这里需要注注意的是,样样式表的编码码必须与关联联的XML有有相同的编码码。(3)根模模板标记。XSL处理器首先先找到根模板板,然后开始始XSL变换换。程序中的的根模板结构构为<xsl:templatematch="/">根根标标记模板的内内容</xsl:template>这这里需需要注意的是是,根模板的的匹配模式必必须是“/””。(4)程序序中用到的XSL语句。。
程序序中的XSL语句<xsl:value-ofselect="书书/书名"/>是XSL中的赋值语语句,表示取取出引号中指指定的属性值值,即取出书书元素中书名名的值(面向向对象程序设设计——Java)。程程序中用到的的XSL语句句如表11.2所示。表11.2程程序中用用到的XSL语句前面介绍的是是编写静态XML页面的的方法。静态态的XML文文档只能表示示比较简单的的信息,而无无法完成比较较复杂的客户户端与服务器器端的交互。。本节我们主主要介绍动态态生成XML文档的方法法。包括用Servlet动态生成成XML文档档和用JSP动态生成XML文档。。11.5用用Servlet和JSP动态生生成XML文文档11.5.1用Servlet动态生成XML文档为了说明用Servlet动态生成成XML文档档的方法,我我们编写下述述三个文件::一是填写留留言信息的HTML文件件;二是获得得留言信息并并生成XML文件的Servlet程序;三是是对XML文文件标记附加加不同的样式式,生成HTML文件的的XSL文件件。1.填写留留言信息的示示例文档c11_4_html.html<!--c11_4_html.html--><HTML><HEAD><TITLE>messageboard</TITLE>
</HEAD>
<BODY><center>留留言板</center><FORMaction="C11_4_XSL_Servlet"method="POST"><TABLEborder=1align="center"><TR><TD>姓名名:</TD><TD><inputtype="text"name="name"size=25></TD></TR><TR><TD>留言::</TD><TD><textareaname="content"rows=7cols=25></textarea></TD></TR><TR><TDalign="center"><inputtype="submit"value="确定定"></TD><TDalign="center"><inputtype="reset"value="重新填写"></TD></TR></TABLE></TD></TR></TABLE></FORM></BODY></HTML>运运行c11_4_html.html程序,填填写留言信息息,结果如图图11.6所所示。图11.6c11_4_html的运行结结果2.获得留留言信息,并并生成XML文件的Servlet示例程序C11_4_XSL_Servlet.javaimportjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassC11_4_XSL_ServletextendsHttpServlet{ //重写写doPost方法publicvoiddoPost(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException{//设置服务务器输出格式式为XML文文档res.setContentType("text/xml");//获得与与客户端的浏浏览器链接的的输出流,用用于发送输出出结果ServletOutputStreamout=res.getOutputStream();out.print("<?xmlversion=\"1.0\"encoding=\"GB2312\"");out.println("standalone=\"no\"?>");out.println("<?xml-stylesheettype=\"text/xsl\"href=\"c11_4.xsl\"?>");out.println("<message>");out.println("<NAME>");out.println(req.getParameter("name"));out.println("</NAME>");out.println("<CONTENT>");out.println(req.getParameter("content"));out.println("</CONTENT>");out.println("</message>");out.close();}//重写doGet方法法publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres) throwsServletException,IOException{doPost(req,res); }}<xsl:value-ofselect="NAME"/><BR></BR><xsl:value-ofselect="CONTENT"/></BODY></HTML></xsl:for-each></xsl:template>
</xsl:stylesheet>
C11_4_XSL_Servlet的运行结果果如图11.7所示。图图11.8是是XSL文件件在Eclipse平台台中的存放位位置说明。图11.7C11_4_XSL_Servlet的运运行结果图11.8c11_4.xsl的存放位置置11.5.2用JSP动态生成成XML文档档直接将XML内容在JSP中输出的的JSP示例例程序如下。。
【示示例程序c11_5.jsp】生成成XML文件件的JSP示示例程序。<%@pagecontentType="text/html;charset=GBK"%>
<?xmlversion="1.0"encoding="GB2312"?><?xml-stylesheettype="text/xsl"href="c11_5.xsl"?><目录><%out.println("<书>"+"<书名>面向对象程程序设计———Java</书名>"+"<作者>张张白一,崔尚尚森</作者者>"+"<出版社>西安电子科科技大学出版版社</出版版社>"+"<价格>26.00</价格>"+"<出版日期>2006年年1月</出出版日期>"+"</书>");%><%out.println("<书>"+"<书名名>JSP实实用案例教程程</书名>"+"<作者>冯燕燕奎,赵德奎奎等</作作者>"+<HTML><BODY><center><p><h3>书目目录</h3></p><TABLEalign="center"width="80%"border="1"><tr><td>书名</td><td>作者</td><td>出版社社</td><td>价价格</td><td>出版日期</td></tr><xsl:for-eachselect="书"><tr><td><xsl:value-ofselect="书名"/></td><td><xsl:value-ofselect="作者"/></td><td><xsl:value-ofselect="出出版社"/></td><td><xsl:value-ofselect="价格"/></td><td><xsl:value-ofselect="出出版日期"/></td></tr></xsl:for-each></TABLE></center></BODY></HTML></xsl:for-each>
</xsl:template></xsl:stylesheet>c11_5.jsp的运行结果果如图11.9所示。图11.9c11_5.jsp的的运运行行结结果果11.5.3使使用用DOM解解析析XML文文件件DOM(DocumentObjectModel,,文文档档对对象象模模型型)是是提提供供XML和和HTML文文档档编编程程接接口口的的W3C规规范范。。XML文文档档将将数数据据组组织织为为一一棵棵树树,,DOM就就是是对对这这棵棵树树对对象象的的描描述述。。DOM解解析析XML文文件件后后,,就就用用树树的的形形式式定定义义了了XML文文件件在在内内存存中中的的逻逻辑辑结结构构,,XML文文件件中中的的元元素素便便转转化化为为DOM树树中中的的节节点点对对象象。。Sun公公司司推推出出的的JDK1.4及及以以上上版版本本中中的的JavaAPI遵遵循循了了DOMLevel2Core推推荐荐接接口口的的语语义义说说明明,,提提供供了了相相应应的的Java语语言言的的实实现现。。Java应应用用程程序序可可以以通通过过DOMAPI来来访访问问XML数数据据。。javax.xml.parsers包包中中提提供供的的DoumentBuilder和和DocumentBuilderFactory组组合合,,可可以以对对XML文文件件进进行行解解析析,,转转换换成成DOM树树。。org.xml.dom包包中中提提供供了了Document、、Node、、NodeList、、Element、、Text等等接接口口,,可可以以创创建建、、遍遍历历、、修修改改DOM树树。。javax.xml.transform.dom和和javax.xml.transform.stream包包中中提提供供了了DOMSource类类和和StreamSource类类,,可可以以将将更更新新后后的的DOM文文档档生生成成XML文文件件。。为了了解解析析XML文文件件,,DOM规规定定了了各各种种类类型型节节点点之之间间形形成成的的如如图图11.10所所示示的的子子孙孙关关系系。。Document节节点点代代表表了了整整个个XML或或HTML文文档档,,提提供供了了对对文文档档元元素素和和数数据据的的访访问问。。所所有有其其它它的的节节点点都都以以一一定定的的顺顺序序包包含含在在Document中中,,排排成成一一个个树树型型结结构构。。它它提提供供许许多多方方法法来来获获取取该该节节点点及及节节点点的的相相关关信信息息。。图11.10DOM树树中中节节点点间间的的关关系系Element元元素素表表示示一一个个XML或或HTML元元素素。。文文档档的的数数据据包包含含在在它它的的元元素素中中。。元元素素也也可可具具有有提提供供附附加加内内容容信信息息的的属属性性。。它它提提供供许许多多方方法法来来获获取取该该节节点点及及节节点点的的相相关关信信息息。。Text节节点点表表示示的的是是元元素素或或属属性性值值的的文文本本内内容容,,对对应应着着XML中中的的数数据据内内容容。。CDATASection节节点点解解决决XML文文档档中中的的特特殊殊字字符符的的实实体体引引用用问问题题。。DocumentType节节点点对对应应着着XML文文档档所所关关联联的的DTD文文件件。。下面面通通过过示示例例来来说说明明如如何何使使用用DOM解解析析XML文文档档。。【【示示例例文文档档c11_6.xml】】一一个个简简单单的的XML文文档档。。<?xmlversion="1.0"encoding="UTF-8"?><!--xml文文档档程程序序名名为为c11_6.xml--><目目录录><书书><书书名名>面面向向对对象象程程序序设设计计————Java</书书名名><作作者者>张张白白一一,,崔崔尚尚森森</作作者者><出出版版社社>西西安安电电子子科科技技大大学学出出版版社社</出出版版社社><价价格格>26.00</价价格格><出出版版日日期期>2006年年1月月</出出版版日日期期></书书><书书><书书名名>JSP实实用用案案例例教教程程</书书名名><作作者者>冯冯燕燕奎奎,,赵赵德德奎奎等等</作作者者><出出版版社社>清清华华大大学学出出版版社社</出出版版社社><价价格格>35.00</价价格格><出出版版日日期期>2004年年5月月</出出版版日日期期></书书></目目录录>如如果果用用DOM来来图图形形化化地地表表示示c11_6.xml文文档档,,则则如如图图11.11所所示示。。图11.11c11_6.xml的的运运行行结结果果【示示例例程程序序c11_6.java】】用用DOM解解析析c11_6.xml文文档档的的Java程程序序。。importorg.w3c.dom.*;//XML的的DOM实实现现importjava.io.*;importjavax.xml.parsers.*;//XML解解析析器器接接口口publicclassC11_6{publicstaticvoidmain(Stringargs[]){try{//获获得得一一个个XML文文档档的的解解析析器器DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();//解解析析XML文文档档生生成成DOM文文档档的的接接口口类类,,以以便便访访问问DOMDocumentBuilderbuilder=factory.newDocumentBuilder();//Document接接口口描描述述了了对对应应于于XML文文档档的的文文档档树树Documentdocument=builder.parse(newFile("C11_6.xml"));//去去掉掉XML文文档档中中作作为为格格式式化化内内容容的的空空白白,//而而映映射射在在DOM树树中中的的不不必必要要的的TextNode对对象象document.normalize();Elementroot=document.getDocumentElement();//获获得得根根元元素素StringrootName=root.getNodeName();//得得到到根根元元素素名名System.out.print("XML文件件根节节点的的名字字:"+rootName);//获得得根元元素的的子节节点列列表NodeListnodelist=root.getChildNodes();GetElement(nodelist);//用用递归归方法法实现现DOM文文档的的遍历历}catch(Exceptione){System.out.println(e);}}publicstaticvoidGetElement(NodeListnodelist){intsize=nodelist.getLength();//得得到子子节点点列表表的个个数for(inti=0;i<size;i++){Nodecnode=nodelist.item(i);//获获得子子节点点列表表中的的第i个节节点//判断断该节节点是是否是是文本本节点点if(cnode.getNodeType()==Node.TEXT_NODE){TexttextNode=(Text)cnode;Stringcontent=textNode.getWholeText();//获得得文本本内容容System.out.print(content);}//判断断该节节点是是否是是元素素节点点if(cnode.getNodeType()==Node.ELEMENT_NODE){ElementelementNode=(Element)cnode;Stringname=elementNode.getNodeName();//获得得元素素名字字System.out.print(name+":");//获获得根根元素素的子子节点点列表表NodeListnodelist1=elementNode.getChildNodes();GetElement(nodelist1);//用递递归方方法实实现DOM文档档的遍遍历}}}}图图11.12是上上面两两个文文件在在Eclipse平平台中中的存存放位位置的的说明明(左左窗口口)和和运行行的结结果(右下下窗口口)。。图11.12c11_6.java的的运行行结果果11.1XML是一一种什什么语语言??11.2XML与HTML语语言有有何不不同??11.3XML元素素的语语法格格式是是什么么?11.4XML声声明中中包含含哪些些属性性?11.5XSL样样式表表结构构由哪哪几部部分组组成??11.6XSL的根根模板板结构构是什什么??习题题1111.7设设计并并编写写一个个数据据内容容有特特殊字字符的的XML文文档,,显示示内容容用XSL文档档。11.8设设计计并编编写一一个用用Servlet动动态生生成的的XML文文档,,显示示内容容用XSL文档档。11.9设设计计并编编写一一个用用JSP动动态生生成的的XML文文档,,显示示内容容用XSL文档档。11.10设设计并并编写写一个个使用用DOM解解释XML文档档的程程序。。11.11用用DOM来图图形化化地表表示习习题11.10的XML文档档。9、静夜四无无邻,荒居居旧业贫。。。1月-231月-23Thursday,January5,202310、雨中黄黄叶树,,灯下白白头人。。。02:31:4402:31:4402:311/5/20232:31:44AM11、以我独沈久久,愧君相见见频。。1月-2302:31:4402:31Jan-2305
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《脊柱内镜下经椎间孔入路腰椎间融合内固定的生物力学研究》
- 中老年离婚法院协议书(2篇)
- 2024年度股权投资合同标的投资金额与投资领域
- 2024年度保险合同:某企业财产保险
- 2024年度光通信网络建设与维护合同
- 2024年度彩钢瓦生产设备升级改造合同
- a3打印合同排版
- 2024版租赁空地建设幼儿园合同
- 2024年度旅游服务采购居间合同
- 翻译服务产业链协同
- 机动车检测站违规检验整改报告
- 中国书法艺术 知到智慧树网课答案
- 履约管理制度
- 2024年建筑电工复审考试题库附答案
- 红色知识竞赛题库小学生
- 病原微生物与免疫学考试模拟题(含参考答案)
- MOOC 微型计算机原理与接口技术-南京邮电大学 中国大学慕课答案
- 工贸企业治本攻坚三年行动方案
- 新时代大学生如何践行爱国主义精神
- 七年级期中考试考后分析主题班会课件
- IPQC工作内容培训教材课件
评论
0/150
提交评论