Node,Element,NodeList等都是w3c组织定义的。
Node指一个节点,包括document(xml文档),element(每个tag),attr(element的属性),text...这些你可以看 jaxp doc 中 Node 的 field 段。
不知道在内存中其存储结构是什么样的。
hasChildNode()函数判断其是否有子节点,注意一个节点的子节点包括它的属性、子tag、文本等等。
比如说< COL level="S-1" >g< /COL >这行,节点名为COL,它的子节点有level,text(就是g)两个。
Node指一个节点,包括document(xml文档),element(每个tag),attr(element的属性),text...这些你可以看 jaxp doc 中 Node 的 field 段。
不知道在内存中其存储结构是什么样的。
hasChildNode()函数判断其是否有子节点,注意一个节点的子节点包括它的属性、子tag、文本等等。
比如说< COL level="S-1" >g< /COL >这行,节点名为COL,它的子节点有level,text(就是g)两个。
<table>
<table_code>index.html</table_code>
<table_name>being_paper</table_name>
</table>
<table>
<table_code>
cx_account
</table_code>
<table_name>
cx_account
</table_name>
<condition on = "TRUE">
bank_account
</condition>
<result on = "TRUE">
bank_account
</result>
</table>
</list>这份文档,在list的时候得到length为5,在第二个talbe的时候length为9
为什么阿jaxp的doc里面说的语焉不详,关键是没有一个图来具体说明一个node是什么。呵呵,说句老土的话就是理论和实际不能结合:)谢谢帮忙
docbf=DocumentBuilderFactory.newInstance();
docb=docbf.newDocumentBuilder();
doc=docb.parse(new File(FILE_PATH));
root=doc.getDocumentElement();
NodeList nodelist=root.getChildNodes();
System.out.println("Nodes Total:"+nodelist.getLength());请指教
一定要注意Node包括text,而text包括空白符。
在list的时候有两个element,3个空白text(就是回车换行);
在第二个table的时候有4个element,5个空白text。
------------------------------------------------
假如还不明白,可以这么做:
你把各种类型的xml文档弄出来,包括注释,空白,属性各种东西。
然后对NodeList操作:
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
System.out.println(node.getNodeType());
}
你就会看到不同的type值,是short类型的,可以把Node.ATTRIBUTE_NODE...等值打印出来比较看。
要找到想要的element要通过:getDocumentElement() 、
getElementById()、getElementsByTagName(java.lang.String tagname) 、getElementsByTagNameNS()等等这些方法的运用。
-----------------------------
要修改文件可以通过javax.xml.transform实现,可以搜索本论坛发现相应的方法。
-----------------------------
指教不敢说,可以互相切磋。qq上不了,email在此:[email protected]