您好,欢迎访问三七文档
金桥软件工程师教育系列教程-0-XML教程AURISOFT金桥软件工程师教育系列教程-1-XML的基础知识XML(eXtensibleMarkupLanguage,可扩展标记语言)是一种可扩展性的标记语言,主要用来存储和发送数据信息,以便在各种基于Web的应用程序之间能够更方便地交换数据,它正逐渐成为互联网上进行数据交换的主要方式和主要标准。JSP作为服务器端的动态页面设计语言非常适合与XML协同工作,它可以解析,转换和存取XML文档中的数据,特别是作为Java软件环境的一部分,JSP页面可以利用JavaAPI来处理XML中存储的各种数据对象,在开发动态网站时,将JSP与XML结合起来协同工作能大加强动态网站中信息交互的速度和效率。XML文件的基本结构和语法booklist.xml?xmlversion=1.0encoding=GB2312?!--Java编程系列--booklistbookid=01titleJava网络程序设计/titleauthorlistauthor张三/authorauthor李四/author/authorlistprice35.0/price/bookbookid=02titleJSP动态网页设计/titleauthorlistauthor王五/author/authorlistprice38.0/price/book/booklist(1)XML文件的基本结构XML文件的结构和HTML文件十分相似,不过XML文件的结构要比HTML文件中多样化,因为XML允许自己定义标记,还允许自行定义文件所需的结构,它实际上是一种树状结构的文件。上面这份XML文件是一份图书产品目录(booklist)的XML文件,它拥有多本书的(book)的数据,每一本书都拥有下列的基本目录图书编号(id):用于区分图书的编号图书的名称(title):图书的名称作者列表(authorlist):图书的作者列表,作者列表为此图书的作者,可能只有一位,也可能有很多位图书价格(price):图书的定价(1)文件的声明第一行就是XML文件的声明,它定义XML文件的版本和使用的字符集,此例遵循xml1.0版本规范,使用中文的GB2312字符。(2)根标记金桥软件工程师教育系列教程-2-第三行为xml文件的根标记booklist,这是XML树状结构的根结点。XML文件必须要有根标记(3)子元素接下来就是根元素的两个子元素book,每个book子元素有一个属性id,其下又分别有title、authorlist、和price三个子元素,其中子元素authorlist下还有author子元素。(4)根元素结束标记最后一行为根元素的结束标记/booklist通常,一个XML文件的基本结构就由这四个部分组成2)XML文件的语法XML文件是由元素所组成的,一个完整的元素由开始标记,结束标记和其中的内容所构成,其语法形式为起始和结束标记。起始标记用字符定义,结束标记用/定义。tagnamecontent/tagname空元素标记。空元素标记用于表明元素不包含任何数据。使用字符/来指定空元素标记。tagname/注释。xml中的注释在字符!和之间指定。!--注释--我们再写一个简单一点地game.xml文件?xmlversion=”1.0”encoding=”gb2312”gamesgamegenre=”rpg”XMLInvaders/gamegamegenre=”rpg”ANodeintheXPath/gamegamegenre=”rpg”XPathRacers/game/gamesJava很好的支持了XML应用程序的开发,目前提供了数个扩展API用来建立XML的应用程序,我们常用到是JAXP它所提供的类和方法可以让Java应用程序解析或转换XML文件,JAXP中主要的API包有:Javax.xml.parsers:提供解析XML文件的类Org.xml.sax:这是SAX解析器,提供以事件驱动的方解析XML文件的APIOrg.xml.saxhelpers:提供解析错误处理的相关类,可以帮助程序设计者使用SAXAPI。Org.w3c.dom:提供支持DOM建议规格的API包XML的DOM接口XMLDOM是一个文档对象组成的模型,属于XML文件程序设计接口对象,这个对象模型将XML文件视为树状结构,它提供各种应用程序标准设计接口的属性、方法和对象。通过XMLDOM,程序设计者能够浏览XML文件,新增、删除和修改结点的数据。XMLDOM是一个与语言无关的接口,应用程序通过这个接口与XML内的数据打交道。XML解析器在加载XML文件之后,DOM将XML文件视为树状结构,将其中的元素视为金桥软件工程师教育系列教程-3-树状结构和结点树,XML文件常见的结点种类结点类型举例NODE_PROCESSING_INSTRUCTION?xmlversion=”1.0”encoding=”GB2312”?NODE_ELEMENTtitleJSP动态网页设计/titleNODE_ATTRIBUTEid=1NODE_TEXTjsp动态网页设计下面我们来学习7个最主要的DOM接口。接口说明org.w3c.dom..Node表示DOM中主要的数据类型org.w3c.dom..Nodelist表示一个结点集合org.w3c.dom..Document表示一个完整的XML文档org.w3c.dom..Element表示XML文档中的一个元素org.w3c.dom..Attr表示元素的某个属性org.w3c.dom..Text表示字符数据org.w3c.dom..NamedNodeMap表示一个可以由名称引用的结点集合org.w3c.dom.NodeNode(结点)接口表示XML文档中的基本数据类型。其它接口(比如Document,Element和Attr)由这个接口扩展而来,而且他们中的大多数功能都来自于Node接口。在功能上尽可能使用Node接口处理DOM。也就是说,作为Node可以访问XML文档的任何组件。下面来看一下Node接口的一些方法。方法说明NodeappendChild(Nodechild)在该结点的子结点列表末尾添加一个新的子结点NodecloneNode(booleandepth)返回该结点的一个副本NameNodeMapgetAttributes()如果结点是一个元素,则返回该结点的属性之一NodeListgetChildNodes()返回该结点的所有子结点的NodeListNodegetFirstChild()返回该结点的第一个子结点NodegetLastChild()返回该结点的最后一个结点NodegetNextSibling()返回紧接在该结点后面的结点NodegetNodeName返回该结点的名称StringgetNodeValue()依据结点类型的不同返回该结点的值intgetNodeType()返回该结点的类型DocumentgetOwnerDocument()返回该结点相关的Document对象NodegetParentNode()返回该结点的父结点NodegetPrevioiusSibling()返回该结点前面的结点booleanhasAttribute()根据结点是否含有属性相应返回值true或falsebooleanhasChildNodes()根据结点是否含有子结点相应返回值true或falseNoderemoveChild(NodeoldChild)删除指定的子结点并返回该子结点NodereplaceChild(NodenewChild,NodeoldChild)用指定的结点替换该子结点并返回原来的那个子结点voidsetNodeValue(Stringvalue)设置该结点的值Node接口的这些方法是DOM功能的核心。看下面这个例子:?xmlversioni=”1.0”encoding=”gb2312”金桥软件工程师教育系列教程-4-gamesgetChildNodes可以用于获得根元素的子结点的NodeListgamegenre=”射击”CS/gamegamegenre=”角色扮演”仙剑奇侠传/gamegamesgetNodeValue可以用于获得元素的genre属性或文本值getAttributes可以用于获得game元素的属性org.w3c.dom.NodeListNodeList(结点列表)接口表示结点的列表。通常,该接口用于处理元素集合,这些元素集合可能从某些类型的查询操作中返回,也能从getElementByTagName的Document或Element接口返回。而且,从方法getChildNodes中也将返回NodeList。方法说明intgetLength()返回表示列表中结点数目的数字Nodeitem()返回列表中的一项NodeList接口只包含两种方法:一种方法是得到列表中的结点数,另一种方法是访问列表中某个特殊结点。这样就形成了便利列表中的结点和检索其中的每一个结点的常用模式,举例如下://首先我们假设aNode是被定义过了的Node类型对象NodeListchildren=aNode.getChildNodes();for(inti=0;iaNode.getLength();i++){NodeiNode=children.item(i);System.out.println(“NodeName:”+iNode.getNodeName());System.out.println(“NodeValue:”+iNode.getNodeValue());org.w3c.dom.Document除了Node接口,Document(文档)接口大概是Dom中最有名的接口。该接口表示一个完整地XML文档并包含一些方法,使用这些方法可以创建标记和元素,也可以访问现有XML文档的元素和属性。方法说明AttrcreateAttribute(Stringname)用给定的名称创建一个属性AttrTextcreateTextNode(Stringdata)创建一个文本结点ElementcreateElement(StringtagName)创建一个元素(Element)ElementgetDocumentElement()提供使用文档根元素的权限NodeListgetElementByTagName(StringtagName)按照元素在文档中出现的次序返回包含所有子孙元素结点列表(NodeList)通常,调用负责创建文档实例的factory类将返回Document接口的new实例。解析文档后,向解析器请求该文档就可以创建Document实例。通常,代码类似下面的例子:DOMParserparser=newDOMParser();parser.paser(“booklist.xml”);Documentdom=paser.getDocument();金桥软件工程师教育系列教程-5-org.w3c.dom.Element接下来,比较知名的接口就是Element(元素)接口。Element接口表示XML文档中的一个元素。有时,从头创建元素是可以使用Element接口,例如下面的的例子所示Elementroot=dom.createElement(“games”);或者也可以在迭代Nodes的列表时使用Element接口,如下所示:NodeListchildren=aNode.getChildNodes();for(inti=0;iaNode.getLength();i++){ElementiNode=(Element)children.item(i);例如,如果希望得到元素game的ganre属性值,可以使
本文标题:XML教程(ok)
链接地址:https://www.777doc.com/doc-2857470 .html