接口:org.w 3c .dom.Node:
public interface Node:
该Node接口是整个文档对象模型的主要数据类型。它表示该文档树中的单个节点。当实现Node接口的所有对象公开处理子节点的方法时,不是实现Node接口的所有对象都有子节点。例如,Text节点可能没有子节点,且将子节点添加到这样的节点将导致引发DOMException。
包括属性nodeName、nodeValue 和attributes作为一种获取节点信息的机制,无需向下强制转换为特定的派生接口。在没有对特定的nodeType(如Element的nodeValue或Comment的attributes)的属性的明显映射的情况下,这将返回null。注意,特定的接口可能包含其他更方便的机制来获取和设置相关信息。
―――――――――――――――――――――――――――――――――――――――――――――
接口:org.w 3c .dom.Document:
public interface Document extends Node:
Document接口表示整个HTML或XML文档。从概念上讲,它是文档树的根,并提供对文档数据的基本访问。
因为元素、文本节点、注释、处理指令等不能存在于Document的上下文之外,所以Document接口还包含所需的创建这些对象的工厂方法。所创建的Node对象具有ownerDocument属性,该属性将Node对象与创建这些对象时的上下文所属的Document关联起来。
Document接口的常用方法:
Element getDocumentElement():这是一种便捷属性,该属性允许直接访问文档的文档元素的子节点。
―――――――――――――――――――――――――――――――――――――――――――――
接口:org.w 3c .dom.Element:
public interface Element extends Node:
Element接口表示HTML或XML文档中的一个元素。元素可能有与它们相关的属性;由于Element接口继承自Node,所以可以使用一般Node接口属性attributes来获得元素所有属性的集合。
Element接口上有通过名称获得Attr对象或通过名称获得属性值的方法。在XML中(其中的属性值可能包含实体引用),应该获得Attr对象来检查表示属性值的可能相当复杂的子树。
另一方面,在HTML中(其中的所有属性都有简单的字符串值),可以使用直接访问属性值的方法,这既安全又便捷。
Element接口的常用方法:
NodeList getElementsByTagName(String name):以文档顺序返回具有给定标记名称的所有后代Elements的NodeList。
―――――――――――――――――――――――――――――――――――――――――――――
接口:org.w 3c .dom.NodeList:
public interface NodeList:
NodeList接口提供对节点的有序集合的抽象,没有定义或约束如何实现此集合。DOM中的NodeList对象是活动的。
NodeList中的项可以通过从0开始的整数索引进行访问。
NodeList接口的常用方法:
Node item(int index)
返回集合中的第 index 个项。如果 index 大于或等于此列表中的节点数,则返回 null。
参数:index - 集合中的索引。
返回:返回该NodeList中index位置处的节点;如果索引是无效索引,则返回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,并且表示Element或Attr的文本内容(在XML中称为字符数据)。如果元素的内容中没有标记,则文本包含在实现Text接口的单个对象中,此接口是该元素的唯一孩子。如果有标记,则将它解析为信息项(元素、注释,等等)和组成该元素的子元素列表的Text节点。
首先通过DOM使文档可用时,文本的每个块只有一个Text节点。用户可以创建表示给定元素的内容的相邻的Text节点,没有任何插入标记,但应该知道无法在XML或HTML中表示这些节点之间的分隔,因此它们(通常)不会保持在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 "";
}