JSP DOM解析接口和对象
在DOM接口规范中,包含有多个接口。其中常用的基本接口有Document接口、Node接口、NamedNodeMap接口、NodeList接口、Element接口、Text接口、CDATASection接口和Attr接口等接口。其中,Document接口是对文档进行操作的入口,它是从Node接口继承过来的。Node接口是其他大多数接口的父类,象Documet、Element、Attribute、Text、Comment等接口都是从Node接口继承过来的。NodeList接口是一个节点的集合,它包含了某个节点中的所有子节点。NamedNodeMap接口也是一个节点的集合,通过该接口,可以建立节点名和节点之间的一一映射关系,从而利用节点名可以直接访问特定的节点。下面将对这四个接口分别做一些简单的介绍。
1.Document接口
Document接口表示整个HTML或XML文档。从概念上讲,它是文档树的根,并提供对文档数据的基本访问。由于元素、文本节点、注释、处理指令等都不能脱离文档的上下文关系而独立存在,所以在Document接口提供了创建其他节点对象的方法,通过该方法创建的节点对象都有一个ownerDocument属性,用来表明当前节点是由谁所创建的以及节点同Document
之间的关系。Document接口被实现后,会是一个Document节点对象。该对象可以包含几个节点,如图7-9所示:
图7-9 Document节点和其他节点关系示意图
由图可以看出,Document节点是DOM树中的根节点,也即对XML文档进行操作的入口节点。通过Docuemt节点,可以访问到文档中的其他节点,如处理指令、注释、文档类型以及XML文档的根元素节点等等。另外,从上图还可以看出,在一棵DOM树中,Document节点可以包含多个处理指令、多个注释作为其子节点,而文档类型节点和XML文档根元素节点都是惟一的。在这个Document的接口中声明一些常用的方法,如获得文档类型的声明,
获得该文档使用的编码形式等方法。
2.Node接口
jsp帮助文档Node接口在整个DOM树中具有举足轻重的地位,DOM接口中有很大一部分接口是从Node接口继承过来的,例如,Element、Attr、CDATASection等接口,都是从Node继承过来的。在DOM树中,Node接口代表了树中的一个节点。Node接口提供了访问DOM树中元素内容与信息的途径,并给出了对DOM树中的元素进行遍历的支持。
Node接口是整个文档对象模型的主要数据类型。它表示该文档树中的单个节点。当实现Node接口的所有对象公开处理子节点的方法时,不是实现Node接口的所有对象都有子节点。例如,Text节点可能没有子节点,且将子节点添加到这样的节点将导致引发DOMException。将从Node接口继承的各个子接口分别实现后,就会形成节点树中常见的不同类型的节点,如属性节点,文本节点和元素节点等。
3.NodeList接口
NodeList接口提供对节点的有序集合的抽象,没有定义或约束如何实现此集合。DOM中的
NodeList对象是活动的。NodeList用于表示有顺序关系的一组节点,比如某个节点的子节点序列。另外,它还出现在一些方法的返回值中,例如,GetNodeByName。在DOM中,NodeList的对象是活动的,换句话说,对文档的改变,会直接反映到相关的NodeList对象中。例如,如果通过DOM获得一个NodeList对象,该对象中包含了某个Element节点的所有子节点的集合,那么,当再通过DOM对Element节点进行操作(添加、删除、改动节点中的子节点)时,这些改变将会自动地反映到NodeList对象中,而不需要DOM应用程序再做其他额外的操作。
NodeList中的每个item都可以通过一个索引来访问,该索引值从0开始。获得一个该接口的实例化对象,实际上就是获得一个节点的集合,只不过开始时指针在第一个节点的前面。Node接口被实现后,就是节点集合对象。
4.NamedNodeMap接口
实现了NamedNodeMap接口的对象中,包含了可以通过名字来访问的一组节点的集合。不过注意,NamedNodeMap并不是从NodeList继承过来的,它所包含的节点集中的节点是无序的。尽管这些节点也可以通过索引来进行访问,但这只是提供了枚举NamedNodeMap中
所包含节点的一种简单方法,并不表明在DOM规范中为NamedNodeMap中的节点规定了一种排列顺序。NamedNodeMap表示的是一组节点和其惟一名字的一一对应关系,这个接口主要用在属性节点的表示上。与NodeList相同,在DOM中,NamedNodeMap对象也是“live”的,即活动的。
5.Element接口
Element接口继承Node接口,Element接口表示HTML或XML文档中的一个元素标记。元素可能有与它们相关的属性;由于Element接口继承自Node,所以可以使用一般Node接口属性attributes来获得元素所有属性的集合。Element接口上有通过名称获得Attr对象或通过名称获得属性值的方法。在XM中(其中的属性值可能包含实体引用),应该获得Attr对象来检查表示属性值的可能相当复杂的子树。另一方面,在HTML中(其中的所有属性都有简单的字符串值),可以使用直接访问属性值的方法,这既安全又便捷。
6.Text接口
Text接口继承自CharacterData,并且表示Element或Attr的文本内容(在XML中称为字符数
据)。如果元素的内容中没有标记,则文本包含在实现Text接口的单个对象中,此接口是该元素的惟一孩子。如果有标记,则将它解析为信息项(元素、注释,等等)和组成该元素的子元素列表的Text节点。首先通过DOM使文档可用时,文本的每个块只有一个Text节点。用户可以创建表示给定元素的内容的相邻的Text节点,没有任何插入标记,但应该知道无法在XML或HTML中表示这些节点之间的分隔,因此它们(通常)不会保持在DOM编辑会话之间。alize()方法为每个文本块将所有这样的相邻Text对象合并为单个的节点。不对Text节点的内容进行任何词汇检查,并且根据节点在文档中的位置,有些字符必须在使用字符引用进行序列化期间转义;例如,在文本内容是元素或属性的一部分的字符"<&";文本内容是元素一部分的字符序列"]]>";当文本内容是属性一部分的引号字符"或省略符号字符'。
接口是一组方法声明的集合,没有具体的实现。这些方法具有共同的特征,即共同作用于XML文档中某一个对象的一类方法。当用编程语言实现这个接口的一个对象,那么该对象就可以称为DOM对象。如Attr这个接口,里面封装的关于节点属性方面的操作方法,如获的属性的名称,获得属性的值等。如果一个Attr对象实现了这个接口,那么此对象就是DOM对象,即属性操作对象。
在DOM对象中,有下面几个常用的对象,分别为XML文档对象、XML节点对象和XML节点列表对象。
● XML文档对象 XML文档既是一种对象,同时又代表整个XML文档。它由根元素和子元素组成。该对象是由Document对象实现。若对一个XML文档进行操作,首先要获得是整个文档对象,然后再根据程序的需要调用该对象的其它子对象。
● XML节点对象 XML节点对象代表的是XML文档内部的单个节点,它是Node接口实现的对象。利用该对象可以完成对节点追加等方面的操作。
● XML节点列表 XML文档模块列表代表了节点的集合。它是NodeList接口实现的对象,通过该对象可以对节点进行大批量的读取和操作。
当实现了一个接口的对象,那么就可以依据该对象对XML文档的节点树中相关对象进行操作。可以这样理解,现在XML文档的节点树是一个实体,要对这个实体对象操作,需要相关的方法,而接口中由这些方法,对象是一个接口的实现。那么这时候通过对象就可以来操作了,实际上对象在这里是充当句柄。句柄可以这样认为就像看电视用的遥控器,通过它来控制电视的选台,颜,声音等。
对XML文档操作,实际上就是创建不同的对象(对于DOM树模型中不同的节点对象),来做不同的操作。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论