<testNamedNodeMap attr1=”test1” attr2=”test2” attr3=”test3”/>
这里面attr1,attr2,attr3等就可以用NamedNodeMap来描述。这个接口包含的方法如表1。表1、NamedNodeMap中定义的方法
方法 |
使用说明 |
int getLength() |
返回在Map里面的节点的个数。 |
Node getNamedItem(java.lang.String name) |
通过节点的名字从Map里面获取节点。 |
Node getNamedItemNS(java.lang.String namespaceURI, java.lang.String localName) |
通过节点的名空间和节点的名字从Map里面获取节点。 |
Node item(int index) |
这个方法Map中的第index个节点,这个方法应该同getLength()方法协同使用。index从0开始计,如果index的值大于或等于用getLength得到的值,这个方法返回null。 |
Node removeNamedItem(java.lang.String name) |
通过引用节点的名字,从Map中删除一个节点。返回值为被删除的节点。 |
Node removeNamedItemNS( java.lang.String namespaceURI, java.lang.String localName) | 通过引用节点的名空间和节点的名字,从Map中删除一个节点。返回值为被删除的节点。 |
Node setNamedItem(Node arg) | 向Map中增加一个节点。返回值为增加的节点。使用这个节点的nodeName属性。 |
Node setNamedItemNS(Node arg) | 向Map中增加一个节点。返回值为增加的节点。使用这个节点的namespaceURI属性和localName属性。 |
表2:Node界面中定义的静态数据
数据 | 意义 |
short ATTRIBUTE_NODE | 表示这个节点是一个Attr。 |
short CDATA_SECTION_NODE | 表示这个节点是一个CDATASection。 |
short COMMENT_NODE | 表示这个节点是一个Comment。 |
short DOCUMENT_FRAGMENT_NODE | 表示这个节点是一个DocumentFragment。 |
short DOCUMENT_NODE | 表示这个节点是一个Document。 |
short DOCUMENT_TYPE_NODE | 表示这个节点是一个DocumentType。 |
short ELEMENT_NODE | 表示这个节点是一个Element。 |
short ENTITY_NODE | 表示这个节点是一个Entity。 |
short ENTITY_REFERENCE_NODE | 表示这个节点是一个EntityReference。 |
short NOTATION_NODE | 表示这个节点是一个Notation。 |
short PROCESSING_INSTRUCTION_NODE | 表示这个节点是一个ProcessingInstruction。 |
short TEXT_NODE | 表示这个节点是一个Text。 |
表3:Node界面中声明的方法
方法 | 使用说明 |
Node appendChild(Node newChild) | 在这个节点中增加一个子节点。这个新增加的子节点将被添加在子节点队列的尾部。如果参数实际上是一个DocumentFragment,其全部内容会被加入到子节点队列中。返回值为被添加的节点。 |
Node cloneNode(boolean deep) | 这个方法复制这个节点,参数控制是否复制子节点,但是如果存在属性会复制所有的属性,包括由DTD定义产生的缺省属性。需要注意的是这个方法返回的节点不包括父节点属性,即getParentNode()返回null。 |
NamedNodeMap getAttributes() | 返回一个包含所有的属性(Attributes)的NamedNodeMap。如果没有,则返回null。 |
NodeList getChildNodes() | 返回一个包含所有的子节点的NodeList。或返回一个不包含任何节点的NodeList。 |
Node getFirstChild() | 返回第一个子节点。若没有则返回null。 |
Node getLastChild() | 返回最后一个子节点。若没有则返回null。 |
String getLocalName() | 返回不包括名空间的局域名,若该节点不支持名空间,则返回null。 |
String getNamespaceURI() | 返回节点的名空间URI,若没有,则返回null,而不是空的字符串。 |
Node getNextSibling() | 返回这个节点后面的兄弟节点,如果没有,则返回null。Sibling为兄弟的意思。 |
String getNodeName() | 返回节点的名字。 |
short getNodeType() | 返回节点的类型,其类型如表2。 |
String getNodeValue() | 返回节点的值。 |
Document getOwnerDocument() | 返回包含此节点的Document。 |
Node getParentNode() | 返回父节点。 |
String getPrefix() | 返回名空间的前置部分。 |
Node getPreviousSibling() | 返回前一个兄弟节点。若没有,则返回null。 |
boolean hasAttributes() | 返回是否有属性。 |
boolean hasChildNodes() | 返回是否有子节点。 |
Node insertBefore(Node newChild, Node refChild) | 在制定的节点处插入一个节点,插入的节点作为第一个参数,插入位置作为第二个参数。 |
boolean isSupported( String feature, String version) | 测试解析器是否支持某些特性和版本号。 |
void normalize() | 调用此方法可以合并相邻的Text节点,消除空的Text节点。 |
Node removeChild(Node oldChild) | 从子节点队列中去除一个节点,然后返回该节点。 |
Node replaceChild(Node newChild, Node oldChild) | 用第一个参数制定的节点取代用第二个参数制定的子节点。 |
void setNodeValue(String nodeValue) | 设置节点的值。 |
void setPrefix(java.lang.String prefix) | 设置名空间的前置值。 |
表4:Element界面的特有方法
方法 | 使用说明 |
String getAttribute(String name) | 调用此方法可以获取属性的值,参数为属性名,返回值为属性值。 |
Attr getAttributeNode(String name) | 调用此方法可以获取属性节点的引用,参数为属性名,返回值为属性节点的引用。 |
Attr getAttributeNodeNS(String namespaceURI, String localName) | 调用此方法可以获取属性节点的引用,参数为属性的名空间和属性的局域名,返回值为属性节点的引用。 |
String getAttributeNS(String namespaceURI, localName) | 调用此方法可以获取属性的值,参数为属性的名空间和属性的局域名,返回值为属性值。 |
NodeList getElementsByTagName(String name) | 调用此方法可以获取所有具有参数指定的tag的子Element,并且在一个NodeList中返回。 |
NodeList getElementsByTagNameNS(String namespaceURI, String localName) | 同上一方法,但是tag的名字用名空间表示。 |
String getTagName() | 返回这个Element的tag。例如XML语句<test>…</test>将会返回test。 |
boolean hasAttribute(String name) | 这个方法检验是否有指定属性名的属性。 |
boolean hasAttributeNS(String namespaceURI,String localName) | 同上方法,但是属性名用名空间表示。 |
void removeAttribute(String name) | 删除一个属性,参数为属性名。 |
Attr removeAttributeNode(Attr oldAttr) | 删除一个属性,参数为属性节点。 |
void removeAttributeNS(String namespaceURI,String localName) | 删除一个属性,参数为名空间URI和局域名。 |
void setAttribute(String name, String value) | 设置一个属性的值,第一个参数是属性名,第二个参数是属性值。如果该属性在设置之前不存在,则增加一个新的属性。 |
Attr setAttributeNode(Attr newAttr) | 设置一个属性节点,参数为一个Attr对象。 |
Attr setAttributeNodeNS(Attr newAttr) | 设置一个属性节点,参数为一个带名空间和局域名的Attr对象。 |
void setAttributeNS(String namespaceURI, String qualifiedName,String value) | 设置一个属性的值,第一个参数是名空间,第二个参数是属性名,第三个参数是属性值。如果该属性在设置之前不存在,则增加一个新的属性。 |
表5:Document界面特有的方法
方法 | 使用说明 |
Attr createAttribute(java.lang.String name) | 用指定的名字动态创建一个Attr。 |
Attr createAttributeNS(java.lang.String namespaceURI,java.lang.String qualifiedName) | 用指定的名空间和名字动态创建一个Attr。第一个参数为名空间的URI,第二个参数为Attr的名字。 |
CDATASection createCDATASection(java.lang.String data) | 动态创建一个CDATASection,参数为CDATASection的数据。 |
Comment createComment(java.lang.String data) | 动态创建一个Comment(注释),参数为注释的内容。 |
DocumentFragment createDocumentFragment() | 动态创建一个空的DocumentFragment。 |
Element createElement(java.lang.String tagName) | 动态创建一个Element,这个方法是我们在动态修改DOM树内容,即动态创建XML的时候最常用的方法之一,参数为Element的tag。这个方法一般会和createAttribute和createTextNode方法合用。 |
Element createElementNS(java.lang.String namespaceURI,java.lang.String qualifiedName) | 动态创建一个支持名空间的Element,第一个参数为名空间的URI第二个参数为Element的tag名。 |
EntityReference createEntityReference(java.lang.String name) | 动态创建一个EntityReference元素,如果这个EntityReference已知,则创建其子节点。 |
ProcessingInstruction createProcessingInstruction(java.lang.String target, java.lang.String data) | 动态创建一个ProcessingInstruction,例如 <?xml-stylesheet type="text/xml" href="14-2.xsl"?>其中xml-stylesheet为第一个参数即target的内容,type="text/xml" href="14-2.xsl"为第二个参数即data中的内容。 |
Text createTextNode(java.lang.String data) | 动态创建一个Text节点,这可是一个重要的方法,一个XML文件中的“实质内容” 可都是用这个方法创建的,因此一定要牢牢记住。参数为节点的内容。 |
DocumentType getDoctype() | 这个方法返回DocumentType(文件类型定义)。 |
Element getDocumentElement() | 返回文档的根元素。同整个文档不同,这个Element不会包含DocumentType。如果解析的是一个HTML文件,那么他的根元素是<html>这个标签。 |
Element getElementById(java.lang.String elementId) | 根据元素的ID返回一个Element。这是最有用的方法之一,可以迅速地找到一个元素。元素的ID是由在DTD中声明的ATTLIST决定的,如以下代码<!ATTLIST test1 id ID #REQUIRED>声明了test1这个Element有一个标记为id的属性作为ID。参数是ID。如果在XML文档中有不只一个采用这个ID的元素,那么解析器的行为不可预测。 |
NodeList getElementsByTagName(java.lang.String tagname) | 通过tag取得所有使用这个tag的元素的引用。这也是最有用的方法之一,可以迅速地找到一系列使用同一个tag的元素。参数是tag的名字,返回值在一个NodeList里面返回。 |
NodeList getElementsByTagNameNS(java.lang.String namespaceURI, java.lang.String localName) | 同上,但是使用名空间访问。 |
DOMImplementation getImplementation() | 返回正在使用的DOMImplementation对象。 |
Node importNode( Node importedNode, boolean deep) | 从其他文档对象引入一个节点。第一个参数是节点的引用,第二个参数决定是否引入子节点。原节点不会被改变或者被删除。在引入的同时不会改变名空间信息。但是Element的缺省属性不会被拷贝。 |
表6:Attr界面中的方法
方法 | 使用说明 |
String getName() | 返回属性的名字,就是等号前面的部分。 |
Element getOwnerElement() | 返回拥有这个属性的父节点。 |
boolean getSpecified() | 说明这个属性是在XML文档中声明的还是由DTD自动生成的缺省属性。如果是前者则返回true,如果是后者则返回false。 |
java.lang.String getValue() | 返回属性的值,就是等号后面的部分。 |
void setValue(java.lang.String value) | 设置属性的值。 |
表7:CharacterData界面中的方法
方法 | 使用说明 |
void appendData(java.lang.String arg) | 在字符串的尾部增添数据。参数为要增加的字符串。 |
void deleteData(int offset,int count) | 删除字符串中的一部分数据,第一个参数为开始位置,第二个为字符的个数。个人认为更有用的是删除全部数据。 |
java.lang.String getData() | 返回字符串数据。但是这个方法不保证返回这个对象内的数据,甚至可能返回整个XML文档。 |
int getLength() | 返回数据长度。 |
void insertData(int offset, java.lang.String arg) | 这个方法用来在字符串中插入另一个一个字符串,第一个参数为开始位置,第二个参数是要插入的字符串。 |
void replaceData(int offset, int count, java.lang.String arg) | 这个方法用来在字符串中置换一部分数据,第一个参数为开始位置,第二个为长度,如果第一个参数和第二个参数的和超过了数据的长度,那么将会删除开始位置后面的所有的数据,然后把新的数据追加在后面。 |
void setData(java.lang.String data) | 这个方法置换所有的字符串数据。 |
java.lang.String substringData(int offset, int count) | 这个方法从数据中获取一部分字符串,第一个参数为开始位置,第二个参数为长度。如果第一个参数和第二个参数的和超过了数据的长度,那么忽略的二个参数,返回实际长度的字符串。 |
表8:DOMParser中的重要方法
方法 | 使用说明 |
图1:TestXerces1的运行结果