第八章 XML应用编程.ppt
《第八章 XML应用编程.ppt》由会员分享,可在线阅读,更多相关《第八章 XML应用编程.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、芜湖职业技术学院信息工程系第八章第八章 XMLXML应用编程应用编程2引言引言XML仅仅用来存放数据,其他的工作都交给相应的应用程序来完成。例如,XML数据的显示是由样式单文件来控制的。更多的针对XML数据的操作,如XML数据的读写,XML数据的添加、删除、修改、查询、管理等工作,都需要用户利用XML编程接口开发相应的应用程序来完成。3本章目标本章目标XML编程接口与解析器DOM接口介绍DOM文档对象模型DOM的常用接口SAX接口概述SAX工作原理SAX编程一般步骤遍历XML文档的SAX程序SAX错误的处理4XML 编程接口与解析器XML编程接口指的是应用程序操作XML文档所使用的API函数的
2、集合。DOM接口SAX接口这些编程接口需要由XML解析器实现,应用程序为了能够处理XML文档几乎都需要一个XML解析器5XML 编程接口与解析器解析器能够检查文档是否严格遵守XML规范,也能够判断一个XML文档是否遵守DTD/Schema标准(如果该XML文档有DTD/Schema的话)。目前XML解析器有许多种类和版本,较为常见的XML解析器主要有:IBMXML4J、ApacheXerces、SunJAXP、MicrosoftMSXML、OracleXMLParserforJava、JamesClarkXP等,6XML 编程接口与解析器比较项IBMXML4JApacheXercesSunJA
3、XPMicrosoftMSXMLOracleXMLParserforJavaJamesClarkXP对文档是否有良好格式的检查文档有效性检查命名空间支持XSLT是否支持Java是否支持SAX接口是否支持DOM接口是否开源7DOM接口介绍接口介绍DOM接口即文档对象模型(DocumentObjectModel),是W3C(万维网联盟)的推荐标准。W3C给出的定义为:“W3C文档对象模型(DOM)是一个使程序和脚本有能力动态地访问和更新文档的内容、结构以及样式的平台和语言中立的接口”DOM接口把XML、HTML或动态HTML的文档看作是面向对象编程概念中的对象对象对象对象,称为文档对象文档对象提供
4、一整套浏览、处理、操作浏览、处理、操作该文档对象及其内部数据的方法和命令,这些方法和命令的集合就构成了DOM API接口,接口,支持DOM的XML解析器实现该接口。8DOM接口介绍接口介绍W3CDOM被分为3个部分:核心DOM:用于任何结构化文档的标准模型;HTMLDOM:用于HTML文档的标准模型;XMLDOM:用于XML文档的标准模型。9DOM接口介绍接口介绍当您用一个DOM解析器来解析一个XML文档时,您将获得一个包含文档中所有元素的树结树结构构。DOM解析器提供了添加、删除、修改XML的方法和属性。10DOM接口介绍接口介绍XMLDOM处理XML文档的优点:能保证正确的语法和格式简化了
5、文档的操作。与数据库可以良好的转换。11DOM文档对象模型文档对象模型XML文档中的每个成分都是一个节点。DOM是这样规定的:整个文档是一个文档节点;每个XML标记是一个元素节点;包含在XML元素中的文本是文本节点;每一个XML属性是一个属性节点;注释属于注释节点。12DOM文档对象模型文档对象模型上下五千年王强2005630.00元book7_1.xml 13DOM文档对象模型文档对象模型14DOM文档对象模型文档对象模型最常见的节点类型:元素:元素是XML的基本构件。典型地,元素可以有其它元素、文本节点或两者兼有来作为其子节点。元素节点还是唯一可以有属性类型的节点。属性:属性节点包含关于元
6、素节点的信息,但实际上,不认为它是元素的子节点不认为它是元素的子节点文本:文本节点是文本。它可以包含许多信息或仅仅是空白。注意,文本总是存储在文本节点中。在DOM处理中,一个普遍的错误是认为元素节点包含文本一个普遍的错误是认为元素节点包含文本。文档(根节点):文档节点是整个文档中所有其它节点的父节点。(根节点不等于根元素节点!根节点不等于根元素节点!根节点不等于根元素节点!根节点不等于根元素节点!)较不常见的节点类型:CDATA、注释、处理指令、DocType15DOM文档对象模型文档对象模型DOM节点树上的每一个节点同时可以看作是一个对象,DOM编程与面向对象的程序设计非常类似.上下五千年
7、王强 20056 30.00元 Document对象处理指令对象书库元素对象Text对象上下五千年属性对象DOCTYPE对象书元素对象16DOM文档对象模型文档对象模型每一个对象同时可以看作是一个节点,每个节点对节点对象象都可以包含若干属性属性属性属性,包括:节点类型:文档、元素、处理指令、文本、注释、属性等名字:通常为所对应的标记的名字值:元素类型节点的值属性为NULL;父节点:Document对象没有父节点子节点列表:序号:其他属性:17DOMDOM的常用接口的常用接口XML与Java具有天然的组合优势Java提供了JAXP(JavaAPIforXMLParsing)接口来使用SAX和DO
8、M,JAXP接口包含了3个包。org.w3c.dom,W3C推荐的用于XML标准规划文档对象模型的接口。org.xml.sax,用于对XML进行语法分析的事件驱动的XML简单API(SAX)。javax.xml.parsers,解析器工厂工具,程序员获得并配置特殊的语法分析器。18DOMDOM的常用接口的常用接口包org.w3c.dom中所定义的接口主要有:Node接口NodeList接口Document接口Element接口Attr接口NamedNodeMap接口Text接口其他的接口可参见:jaxp-1_3-fr-spec-apidocs文档19NodeNode接口接口20NodeNode
9、接口接口Node代表文档树中的单个节点,它是许多其他接口的超接口,类似于Java中的object接口。每个节点都有nodeName、nodeValue属性,用于返回当前节点的名称和节点值。注意:所有元素的nodeValue的值为null,用getTextContent获得它的文本值。每个节点都有一个getNodeType()方法用来获得当前节点类型,该方法返回值是表7-2所示的常量。21节点类型常量节点类型常量常量描述ATTRIBUTE_NODE该节点为AttrCDATA_SECTION_NODE该节点为CDATASectionCOMMENT_NODE该节点为CommentDOCUMENT_N
10、ODE该节点为DocumentDOCUMENT_TYPE_NODE该节点为DocumentTypeELEMENT_NODE该节点为ElementENTITY_NODE该节点为EntityENTITY_REFERENCE_NODE该节点为EntityReferenceNOTATION_NODE该节点为NotationPROCESSING_INSTRUCTION_NODE该节点为ProcessingInstructionTEXT_NODE该节点为Text节点22NodeNode接口提供的主要方法接口提供的主要方法方法描述hasChildNodes()该方法返回一个布尔值,用来判断当前节点是否有子节
11、点hasAttributes()该方法返回一个布尔值,用于判断当前节点是否包含属性getPreviousSibling()返回与当前节点最靠近的前面一个兄弟节点,返回值是一个NodegetNextSibling()返回与当前节点最靠近的后面一个兄弟节点,返回值是一个NodegetParentNode()返回与当前节点的父节点,返回值是一个NodegetChildNodes()返回与当前节点的子节点列表,返回值是一个NodeListgetFirstChild()返回与当前节点的第一个子节点,返回值是一个NodegetLastChild()返回与当前节点的最后一个子节点,返回值是一个Nodeget
12、Attributes()获得元素节点下的属性列表,返回值是一个NamedNodeMapgetLocalName()获得当前节点的本地名称,其返回值是字符串getNamespaceURI()获得当前节点的扩展名中的URI部分,其返回值是字符串23NodeNode接口提供的主要方法(续)接口提供的主要方法(续)方法描述getNodeName()获得当前节点的名称,其返回值是字符串getNodeType()获得当前节点的类型,其返回值是一个常量getNodeValue()获得当前节点的值,其返回值是字符串getTextContent()获得当前节点和其后代的文本内容,其返回值是字符串setTextC
13、ontent(java.lang.StringtextContent)设置节点的文本内容insertBefore(NodenewChild,NoderefChild)将第一个参数指定的节点插入到第二个参数指定的子节点前面removeChild(NodeoldChild)删除当前节点下由参数指定的子节点replaceChild(NodenewChild,NodeoldChild)用新的子节点(第一个参数)去替换旧的子节点(第二个参数)appendChild(NodenewChild)在当前节点的子节点列表最后增加一个新的子节点cloneNode(booleandeep)克隆一个当前节点,其参数为
14、布尔值24NodeListNodeList接口接口NodeList接口提供对节点的有序集合的抽象,如Node接口的getChildNodes()方法所获得的就是一个NodeList对象。NodeList中的项可以通过从0开始的整数索引进行访问。NodeList接口所提供的主要方法有:getLength()获得列表中的节点数;Item(i)访问列表中的第i个节点(从0开始编号)例如:NodeList aa=person.getChildNodes()aa.getLength()aa.item(0)25Document接口Document.getDocumentElement()Document.
15、getDoctype()是操作是操作XML文档的入口文档的入口节点节点 26ElementElement接口接口Element 代表文档中的一个元素。由于Element接口继承自Node,所以继承了Node接口的方法、属性。需要注意的是元素节点的的nodeValue的值为null,而不是元素内容,如果想获得元素内容可以使用它的getTextContent()方法。除了从node继承的属性外,还有以下的一些属性、方法:27ElementElement接口主要方法接口主要方法方法描述getElementsByTagName(java.lang.Stringname)根据标记名获得后代元素节点列表g
16、etTagName()获得当前元素节点的标记名hasAttribute(java.lang.Stringname)若当前元素包含此名称的属性,此方法的返回值逻辑真,否则返回逻辑假。removeAttribute(java.lang.Stringname)在当前元素中删除指定名称的属性removeAttributeNode(AttroldAttr)在当前元素中删除指定的属性节点28ElementElement接口主要方法(续)接口主要方法(续)方法描述getAttribute(java.lang.Stringname)根据属性名获得属性值getAttributeNode(java.lang.St
17、ringname)根据属性名获得一个属性节点setAttribute(Stringname,Stringvalue)根据属性名称和属性值添加一个新属性。如果这个属性已经被添加了,将其值修改为valuesetAttributeNode(AttrnewAttr)添加新的属性节点,如果具有该名称的属性已经出现在元素中,则用新属性newAttr替换它。该方法返回被取代的attr节点引用或nullsetAttributeNS(StringnamespaceURI,StringqualifiedName,Stringvalue)根据属性的命名空间URI、属性的扩展名及属性值来添加一个新属性29AttrAt
18、tr接口接口Attr对象代表属性,Attr对象继承自Node接口,但由于它们实际上不是元素的子节点,因此,Attr接口从Node接口继承的方法getParentNode()、getPreviousSibling()和getNextSibling()具有null值除了继承Node的属性方法外,还定义了下列的一些属性:方法描述getName()获得当前属性的名称getOwnerElement()获得当前属性的所属的元素节点GetValue()获得当前属性的属性值SetValue(java.lang.Stringvalue)设置当前属性的属性值isId()若当前属性是一个ID类型的属性,则返回逻辑真
19、,否则返回逻辑假30NamedNodeMapNamedNodeMap接口接口NamedNodeMap是一个具有名称的节点列表,例如node.getAttributes返回的就是一个NamedNodeMap对象它支持NodeList对象的属性和方法;另外还有一些特殊的方法:方法描述getLength()此集合中的节点数item(intindex)返回集合中第index个项getNamedItem(Stringname)检索通过名称指定的节点getNamedItemNS(StringnamespaceURI,StringlocalName)检索通过本地名称和命名空间URI指定的节点31TextTe
20、xt接口接口该Text接口继承自CharacterData,并且表示Element或Attr的文本内容。方法描述getWholeText()获得当前文本节点的所有文本值replaceWholeText(java.lang.Stringcontent)用指定的文本替换当前文本节点的所有文本值32DOMDOM编程一般步骤编程一般步骤DOM编程通常包括以下几个步骤:创建一个解析器对象;将您的XML文档传递给解析器,进行解析,产生DOM节点树对象;处理DOM节点树;保存DOM节点树。33DOMDOM编程一般步骤编程一般步骤创建一个解析器对象;/首先利用DocumentBuilderFactory类的静
21、态方法newInstance()得到解析器工厂实例DocumentBuilderFactorydomfac=DocumentBuilderFactory.newInstance();/然后利用解析工厂的newDocumentBuilder()方法得到解析器;DocumentBuilderdombuilder=domfac.newDocumentBuilder();34DOMDOM编程一般步骤编程一般步骤将XML文档传递给解析器,进行解析,产生Document对象Documentdocument=dombuilder.parse(newFile(book7_2.xml);或Documentdoc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第八章 XML应用编程 第八 XML 应用 编程
限制150内