xml知识介绍

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

XML基础教程21.1什么是XMLXML是eXtensibleMarkupLanguage的缩写,是由万维网联盟(WorldWideWebConsortium,W3C)定义的一种语言,称之为可扩展置标语言。所谓可扩展性是指XML允许用户按照XML规则自定义标记。XML文件是由标记及其所标记的内容构成的文本文件,与HTML文件不同的是,这些标记可自由定义,其目的是使得XML文件能够很好地体现数据的结构和含义。W3C推出XML的主要目的是使得Internet网络上的数据相互交流更方便,让文件的内容更加显而易懂。以下是一个简单的XML文件:?xmlversion=1.0?职员姓名张小三性别男/性别出生日期1980年8月15日/出生日期/姓名/职员上面的XML文件包含一个XML声明(有关XML声明将在2.1详细介绍):?xmlversion=1.0?和4个标记。每个标记都必须包括开始标记和结束标记,标记的开始标记和结束标记之间的内容称为该标记所标记的内容,简称“标记的内容”。一个标记的内容中可以包含文本或其他的标记,其中包含的标记称为该标记的子标记。XML文件有且仅有一个根标记,其他标记都必须封装在根标记中,文件的标记必须形成树状结构。上面的XML文件的根标记的开始标记是“职员”,结束标记是“/职员”,该根标记有一个子标记:“姓名…/姓名”,而标记“姓名…/姓名”的子标记是“性别…/性别”和“出生日期…/出生日期”。XML文件必须符合一定的语法规则,只有符合这些规则,XML文件才可以被XML解析器解析,以便利用其中的数据,后续的章节会详细地讲解XML的语法规则。下面的XML文件都是错误的,其中的“A.xml”没有根标记,“B.xml”的标记没有形成树状结构(标记有交叉)。A.xml?xmlversion=1.0?名称电视机/名称价钱3078元/价钱B.xml?xmlversion=1.0?张小林性别男出生日期第1章XML简介3/性别1980年8月6日/出生日期/张小林1.2XML文件的编辑与保存1.编辑与保存XML是由标记及其所标记的内容构成的文本文件,尽管有一些专门用来编写XML文件的编辑器,但对于学习XML,我们建议使用纯文本编辑器来编辑XML文件。本书以Windows的“记事本”做编辑器。XML文件保存的扩展名必须为“.xml”,例如“Example.xml”、“hello.xml”等。一个XML文件应当以XML声明作为文件的第一行,在其前面不能有空白、其他的处理指令或注释。XML声明以“?xml”标识开始、以“?”标识结束。注意“?”和“xml”之间,以及“?”和“”之间不要有空格。以下是一个最基本的XML声明:?xmlversion=1.0?一个简单的XML声明中可以只包含属性version,目前该属性的值只可以取1.0(1.1还没有正式公布,1.1增加了一些极少被使用的功能),指出该XML文件使用的XML版本。XML声明中还可以指定encoding属性的值,该属性规定XML文件采用哪种字符集进行编码。例如:?xmlversion=1.0encoding=UTF-8?如果在XML声明中没有显示地指定encoding属性的值,那么该属性的默认值为UTF-8编码。如果encoding属性的值为UTF-8,XML文件必须按照UTF-8编码来保存,这样XML解析器就会识别XML中的标记并正确解析标记中的内容。假如使用文本编辑器“记事本”编辑XML文件,在保存文件时,必须将“保存类型”选择为“所有文件”,将“编码”选择为UTF-8。如果你在保存文件时,系统总是给你的文件名尾加上“.txt”,那么你在保存文件时可以将文件名用双引号括起,如图1.1所示。图1.1XML文件的保存2.怎样检查XMLXML的语法规则非常严格,这一点和HTML有很大的不同,HTML本身语法十分不严格,严重影响网络信息传送和共享。W3C吸取了HTML发展的教训,对XML指定了严格的语法标准,例如,标记都必须要有一个开始标记和结束标记,所有的标记都必须合理嵌XML基础教程4套,即形成树状结构。也就是说XML文件必须符合一定的语法规则,只有符合这些规则,XML文件才可以被XML解析器解析,以便利用其中的数据。XML文件分为规范的XML文件和有效的XML文件,符合W3C制定的基本规则的XML文件称为规范的XML文件,规范的XML文件如果再符合额外的一些约束就称为有效的XML文件。有关XML的详细语法将从第2章开始讲述。为了检查XML文件是否规范,一个简单的办法就是用浏览器,比如IE5.5,打开XML文件,如果XML是规范的,浏览器将显示XML源文件,否则,将显示出错信息。图1.2显示了一个规范的XML文件。图1.2用IE5.5打开XML文件1.3XML和HTML有何不同XML可以很好地描述数据的结构,有效地分离数据的结构和表示,可以作为数据交换的标准格式。而HTML是用来编写Web页的语言,HTML把数据和数据的显示外观捆绑在一起,如果只想使用数据而不需要显示外观,可以想象,将数据和外观分离是多么的困难。HTML不允许用户自定义标记,目前的HTML大约有100多个标记。HTML不能体现数据的结构,只能够描述数据的显示格式。下列HTML将数据分别用黑体1、黑体2和黑体3来显示:htmlH1张小三H2男/H2H31980年8月15日/H3/H1H1王小妹H2女/H2H31985年12月7日/H3/H1/html上述HTML从文档结构上无法体现数据“张小三”和“1980年8月15日”之间的逻辑关第1章XML简介5系,浏览器仅仅是能将HTML中标记“H1…/H1”所标记的文本内容用黑体显示在浏览器中。和HTML不同的是,XML可自定义标记,标记名称是对所标记的数据内容含义的抽象,而不是数据的显示格式,XML只关心数据的组织结构,以便XML解析器按照其结构分解出数据,XML本身不提供数据的显示格式。浏览器不能直接显示XML文件的标记内容,如果想要浏览器显示XML文件中标记的内容,就必须以某种方式告诉浏览器如何显示,一种方式是使用层叠样式表(CCS),另一种方式是使用XSL变换(和显示XML数据有关的内容将在第4章和第5章讲述)。以下的XML文件将自己关联到一个层叠样式表,以便浏览器能显示XML文件中标记所标记的内容。层叠样式表中最重要的组成部分就是样式表,其作用是说明XML文件中的标记内容用何种方式来显示。比如,如果想用黑体来显示XML文件中标记“name…/name”所标记的文本内容,就可以在层叠样式表文件中包含如下的样式表:name{display:block;font-size:36pt;font-weight:bold}该样式表的作用是告知浏览器将标记“name…/name所标记的内容显示在一个“块区域”中;而birthday{display:line;font-size:12pt;font-weight:bold}告知浏览器将标记“birthday…/birthday所标记的内容显示在一行中。当使用层叠样式表和XML关联时,XML文档中的标记的名字不要含有非ASII字符。以下的show.css是一个简单的层叠样式表,该文件可以保存为编码为ANSI的文件或编码为UTF-8的文件,并和其关联的XML文件存放在同一目录中。show.cssname{display:block;font-size:18pt;font-weight:bold}sex{display:line;font-size:16pt;font-weight:bold}birthday{display:line;font-size:9pt;font-weight:boldXML基础教程6}XML文件使用操作指令?xml-stylesheet?关联到某个层叠样式表,例如:?xml-stylesheethref=show.csstype=text/css?以下是一个与show.css层叠样式表相关联的XML文件,用浏览器打开Cha1_1.xml文件,浏览器就会按着show.css中的样式表来显示XML文件中标记所标记的文本内容,效果如图1.3所示。图1.3使用CSS显示XML中的数据Cha1_1.xml?xmlversion=1.0??xml-stylesheethref=show.csstype=text/css?employyname张小三sex男/sexbirthday1981年10月10日/birthday/namename王小妹sex女/sexbirthday1985年12月12日/birthday/name/employy1.4XML解析器XML解析器是XML和应用程序之间的一个软件组织,其目的是为应用程序从XML文件中解析出所需要的数据。比如,应用程序可能需要XML文件所标记的商品价格,并准备对价格做数据分析处理。现在普遍使用的XML解析器都是Java语言编写的,本书将采用这样的解析器,有关解析器的详细内容将在第6、7章讲述。以下我们通过一个简单的例子说明解析器的用法。第1章XML简介7Price.xml?xmlversion=1.0encoding=UTF-8?goods名称电视机price8967元/price/名称名称手机price2780元/price/名称/goods为了解析出price.xml中price标记的内容,需经过下列几个步骤。1使用javax.xml.parsers包中的DocumentBuilderFactory类调用其类方法newInstance()实例化一个DocumentBuilderFactory对象:DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();2factory对象调用newDocumentBuilder()方法返回一个DocumentBuilder对象builder(称做DOM解析器):DocumentBuilderbuilder=factory.newDocumentBuilder();DocumentBuilder类在javax.xml.parsers包中。3builder对象调用publicDocumentparse(Filef)方法解析文件f,并将解析内容以对象的形式返回,该对象是实现了Document接口的一个实例。Documentdocument=builder.parse(newFile(price.xml));Document接口在org.w3c.dom包中。对象document是由Node对象组成的,这些Node对象被组成树状结构,其结构和XML标记组成的树状结构相同。4document调用NodeListgetElementsByTagName(Stringstr)方法,返回一个对象,该对象是实现了NodeList接口的一个实例,该实例是由一些Node对象组成的。例如:NodeListnodelist=document.getElementsByTagName(价格);NodeList接口在org.w3c.dom包中。假如XML文件中有两个名称为“价格”标记,那么nodelist.getLength()返回的值是2,即nodelist刚好含有2个Node对象。Nodelist中的Node对象调用getTextContent()方法可以返回和该Node对象相对应XML标记及其所有子孙标记中的文本内容。只要XML文件是规范的,DOM解析器调用parse()方法就能返回一个实现了Document接口的对象,

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功