《XML基础及开发实践》第九章

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

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

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

资源描述

XML第九章DOM《XML基础及实践开发教程》本章学习目标了解:XML文档解析技术掌握:使用DOM来解析XML文档了解:JAXP中关于DOM的接口和类的使用XML文档解析技术XML本身是以纯文本对数据进行编码的一种格式,XML文档常被应用于数据的交互和传输,因此如何读写XML文档就显得非常重要。目前比较流行的XML文档解析技术包括:DOM、SAX、JDOM、DOM4J、Digester。XML文档解析技术DOMDOM是DocumentObjectModel的缩写,即文档对象模型。它是由W3C组织推荐的处理XML的标准接口。2004年4月,W3C组织发布了DOMLevel3Core的推荐标准。DOM可用于直接访问XML文档的各个部分。在DOM中,文档被模拟为树状,其中XML语法的每个组成部分(例如元素或文本内容)都被表示为一个节点。XML文档解析技术SAXSAX是SimpleAPIforXML的缩写,被翻译为XML的简单应用程序接口,它是一种XML解析的方法。SAX最初是由DavidMegginson采用Java语言开发,之后SAX很快在Java开发者中流行起来,参与开发的程序员越来越多,组成了互联网上的XML-DEV社区。1998年5月发布了SAX1.0版,目前SAX最新的版本为2.0。XML文档解析技术JDOMJDOM是两位著名的Java开发人员兼作者,BrettMclaughlin和JasonHunter的创作成果,2000年初在类似于Apache协议的许可下,JDOM作为一个开放源代码项目正式开始研发了。目前它已成长为包含来自广泛的Java开发人员的投稿、集中反馈及错误修复的系统,并致力于建立一个完整的基于Java平台的解决方案,通过Java代码来访问、操作并输出XML数据。XML文档解析技术DOM4JDOM4J是dom4j.org出品的一个开源XML解析包,Dom4j是一个易用的、开源的库,用于XML、XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。XML文档解析技术DigesterDigester是apache基金会的一个开源项目。Digester基于规则的XML文档解析,主要用于XML到Java对象的映射。Digester是在DOM和SAX的基础上衍生出来的工具类,为的是满足将XML转换为JavaBean的特殊需求,故而没有什么特别明显的优缺点。开源框架Struts的XML解析工具Digester,为我们带来了将XML转换为JavaBean的可靠方法。DOM与SAX比较SAXDOM顺序读取文件并产生相应事件,可以处理任何大小的XML文件在内容中建立整个XML文档的节点树,不适合处理大型的XML文件只能按顺序解析XML文件,不支持对文件的随机存取可以随意存取节点树的任何部分,没有次数限制只能读取XML文件内容,不能对XML文件进行修改既可以读取XML文件内容,也可以对XML文件进行修改开发上比较麻烦,需要自己来编写事件处理器代码易于理解,易于开发对工作人员来说更加灵活,可以用SAX创建自己的XML对象模型已经在DOM基础上构建了节点树DOM与SAX比较SAX适用于处理下面的问题:对大型文件进行处理;只需要文件中的部分内容,或者只需要从文件中获取特定的信息;需要建立自己的对象模型。DOM适用于解决的问题类型:需要对文件进行修改;需要随机对文件进行存取。JAXPJAXP是JavaAPIforXMLProcessing的英文字头缩写,是用于XML文档处理的、使用Java语言编写的编程接口。JAXP支持DOM、SAX、XSLT等标准,屏蔽具体厂商实现、让开发人员以一种标准的方式对XML进行编程的规范。JAXP使用DOM来解析XML文档DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();try{DocumentBuilderdb=dbf.newDocumentBuilder();Documentdoc=db.parse(newFile(被解析的XML文件名称));}catch(ParserConfigurationExceptione){e.printStackTrace();}DOM接口及其应用DOM的核心概念即节点,因为DOM在分析XML文档时把所有的内容都映射为节点。所有的节点形成一个树形结构,我们通过访问这棵节点树来访问XML文档。Node代表了Dom模型的一个抽象节点,并没有具体的节点类型。Node接口的主要方法方法描述NodeappendChild(NodenewChild)添加一个子节点,如果已经存在该节点,则删除后添加NodegetFirstChild()如果节点存在子节点,则返回第一个子节点NodegetNextSibling()返回DOM树中这个节点的下一个兄弟节点StringgetNodeName()根据节点的类型返回节点的名称StringgetNodeValue()返回节点的值shortgetNodeType()返回节点的类型booleanhasChildNodes()判断是否存在子节点NoderemoveChild(NodeoldChild)删除给定的子节点对象NodereplaceChild(NodenewChild,NodeoldChild)用一个新的Node对象代替给定的子节点对象ElementElement一个Element对象代表了DOM树的一个元素节点,元素节点是组成文档树的重要部分。通常,元素节点拥有子元素、文本节点或者两者的组合。NodeListgetElementsByTagName(Stringname)返回一个NodeList对象,包含指定元素的所有子元素StringgetTagName()返回一个代表这个标签名字的字符串StringgetAttribute(Stringname)通过名称获得属性值Attr一个Attr对象代表了元素的一个属性。DOM不认为属性节点是DOM文档树的一个独立部分,因此属性节点的父节点、同胞节点等都是null。DOM认为属性节点是元素节点的一个组成部分StringgetName()返回此属性的名称StringgetValue()该属性值以字符串形式返回ElementgetOwnerElement()此属性连接到的Element节点;如果未使用此属性,则为nullTextText节点用于代表XML文档中元素和属性中的文本内容。文本节点可以只包含空白,因此如果元素的内容中包含空白,那么该元素节点的子节点中,也将包含以空白组成的文本节点。StringgetWholeText()返回Text节点的所有文本booleanisElementContentWhitespace()返回此文本节点是否包含元素内容空白符,即经常所称的“可忽略的空白符”CDATASectionCDATASection用于代表XML文档中的CDATA部分的内容,DOM解析器只能识别出CDATA的结尾标记“]]”,并以此作为CDATA的分界符。CDATA段节点表示XML文档中的CDATA段。在DOMAPI中,CDATA段节点是通过org.w3c.dom.CDATASection接口来表示的NodeListorg.w3c.dom.NodeList接口提供了一个有序节点集合的抽象。intgetLength()该方法返回列表中节点的数目Nodeitem(intindex)返回集合中指定索引的节点。索引值从0开始NamedNodeMaporg.w3c.dom.NamedNodeMap接口也是一个节点的集合。通过该接口可以建立节点名和节点之间的映射关系。表示一组节点名称和节点的一一对应关系。intgetLength()该方法返回列表中节点的数目Nodeitem(intindex)返回集合中指定索引的节点。索引值从0开始NodegetNamedItem(Stringname)检索通过名称指定的节点NodesetNamedItem(Nodearg)使用nodeName属性添加节点NoderemoveNamedItem(Stringname)移除通过名称指定的节点Comment、ProcessingInstruction和DocumentFragmentCommentorg.w3c.dom.Comment表示注释,此接口继承自CharacterData表示注释的内容,即起始'!--'和结束'--'之间的所有字符。ProcessingInstructionorg.w3c.dom.ProcessingInstruction接口表示“处理指令”,该指令作为一种在文档的文本中保持特定于处理器的信息的方法在XML中使用。DocumentFragmentorg.w3c.dom.DocumentFragment接口表示文档片段节点。文档片段是“轻量级的”或最小的Document对象。使用JAXP通过DOM解析XML文档?xmlversion=1.0encoding=UTF-8?!--学生王宏Java成绩单--?xsl-stylesheettype=text/xslhref=xmlxslt.xslt?studentid=20100101name王宏/namejava96/javadescription![CDATA[喜爱文学作品三国演义]]/description/student使用JAXP通过DOM解析XML文档使用JAXP通过DOM输出XML文档代码见书中示例使用JAXP通过DOM修改XML文档代码见书中示例本章结束

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

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

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

×
保存成功