如果在文档根节点之前有其他节点(如注释节点),则使用myDoc.getFirstChild()的节点可能不是文档根目录.看下面的例子:
import org.w3c.dom.*;
public class ReadXML {
public static void main(String args[]) throws Exception{
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
// Document elements
Document doc = docBuilder.parse(new File(args[0]));
Node firstChild = doc.getFirstChild();
System.out.println(firstChild.getChildNodes().getLength());
System.out.println(firstChild.getNodeType());
System.out.println(firstChild.getNodeName());
Node root = doc.getDocumentElement();
System.out.println(root.getChildNodes().getLength());
System.out.println(root.getNodeType());
System.out.println(root.getNodeName());
}
}
解析以下XML文件时:
QWZ5671
39.95
Red
Burgundy
Red
Burgundy
给出以下结果:
0
8
#comment
3
1
catalog
但是,如果我删除评论,它给出:
3
1
catalog
3
1
catalog