<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的运行结果
一个使用dom方式的留言板的例子。