使用DOM解析XML文档的常用接口、方法

接口:org.w 3c .dom.Node

public interface Node

Node接口是整个文档对象模型的主要数据类型。它表示该文档树中的单个节点。当实现Node接口的所有对象公开处理子节点的方法时,不是实现Node接口的所有对象都有子节点。例如,Text节点可能没有子节点,且将子节点添加到这样的节点将导致引发DOMException

包括属性nodeNamenodeValue attributes作为一种获取节点信息的机制,无需向下强制转换为特定的派生接口。在没有对特定的nodeType(如ElementnodeValueCommentattributes)的属性的明显映射的情况下,这将返回null。注意,特定的接口可能包含其他更方便的机制来获取和设置相关信息。

 

―――――――――――――――――――――――――――――――――――――――――――――

 

接口:org.w 3c .dom.Document

public interface Document extends Node

Document接口表示整个HTMLXML文档。从概念上讲,它是文档树的根,并提供对文档数据的基本访问。

因为元素、文本节点、注释、处理指令等不能存在于Document的上下文之外,所以Document接口还包含所需的创建这些对象的工厂方法。所创建的Node对象具有ownerDocument属性,该属性将Node对象与创建这些对象时的上下文所属的Document关联起来。

 

Document接口的常用方法:

Element getDocumentElement():这是一种便捷属性,该属性允许直接访问文档的文档元素的子节点。

 

―――――――――――――――――――――――――――――――――――――――――――――

 

接口:org.w 3c .dom.Element

public interface Element extends Node

Element接口表示HTMLXML文档中的一个元素。元素可能有与它们相关的属性;由于Element接口继承自Node,所以可以使用一般Node接口属性attributes来获得元素所有属性的集合。

Element接口上有通过名称获得Attr对象或通过名称获得属性值的方法。在XML中(其中的属性值可能包含实体引用),应该获得Attr对象来检查表示属性值的可能相当复杂的子树。

另一方面,在HTML中(其中的所有属性都有简单的字符串值),可以使用直接访问属性值的方法,这既安全又便捷。

 

Element接口的常用方法:

NodeList getElementsByTagName(String name):以文档顺序返回具有给定标记名称的所有后代ElementsNodeList

 

―――――――――――――――――――――――――――――――――――――――――――――

 

接口:org.w 3c .dom.NodeList

public interface NodeList

NodeList接口提供对节点的有序集合的抽象,没有定义或约束如何实现此集合。DOM中的NodeList对象是活动的。

NodeList中的项可以通过从0开始的整数索引进行访问。

 

NodeList接口的常用方法:

Node item(int index)

返回集合中的第 index 个项。如果 index 大于或等于此列表中的节点数,则返回 null

参数:index - 集合中的索引。

返回:返回该NodeListindex位置处的节点;如果索引是无效索引,则返回null

 

int getLength()

列表中的节点数。有效子节点索引的范围是 0 length-1(包含此值)。

 

―――――――――――――――――――――――――――――――――――――――――――――

 

接口:org.w 3c .dom.CharacterData

public interface CharacterData extends Node

CharacterData接口使用属性集合和用于访问DOM中字符数据的方法扩展节点。为了清楚起见,在这里定义此集合,而不是在使用这些属性和方法的每个对象上定义。任何DOM对象都不会直接对应于CharacterData,尽管Text和其他的对象是从它继承该接口的。此接口中的所有offset都从0开始。

DOMString接口中所述,DOM中的文本字符串以UTF-16(即16位单元序列)表示。在下述情况下,每当需要指示以16位单元在CharacterData上进行索引时就使用术语16位单元。

 

―――――――――――――――――――――――――――――――――――――――――――――

 

接口:org.w 3c .dom.Text

public interface Text extends CharacterData

Text接口继承自CharacterData,并且表示ElementAttr的文本内容(在XML中称为字符数据)。如果元素的内容中没有标记,则文本包含在实现Text接口的单个对象中,此接口是该元素的唯一孩子。如果有标记,则将它解析为信息项(元素、注释,等等)和组成该元素的子元素列表的Text节点。

首先通过DOM使文档可用时,文本的每个块只有一个Text节点。用户可以创建表示给定元素的内容的相邻的Text节点,没有任何插入标记,但应该知道无法在XMLHTML中表示这些节点之间的分隔,因此它们(通常)不会保持在DOM编辑会话之间。Node.normalize()方法为每个文本块将所有这样的相邻Text对象合并为单个的节点。

不对Text节点的内容进行任何词汇检查,并且根据节点在文档中的位置,有些字符必须在使用字符引用进行序列化期间转义;例如,在文本内容是元素或属性的一部分的字符 "<&";文本内容是元素一部分的字符序列 "]]>";当文本内容是属性一部分的引号字符 " 或省略符号字符 '

 

―――――――――――――――――――――――――――――――――――――――――――――

其它常用方法:

public static Element getFirstElement(Element element, String name) {

       NodeList nl = element.getElementsByTagName(name);

       if (nl.getLength() < 1) {

              throw new RuntimeException("Element:" + element

                            + "does not contain:" + name);

       }

       return (Element) nl.item(0);

}

 

public static String getSimpleElementText(Element node, String name) {

       Element nameE1 = getFirstElement(node, name);

       Node textNode = nameE1.getFirstChild();

       if (textNode instanceof Text) {

              return textNode.getNodeValue();

       }

       return "";

}

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值