public void parsersXml() {
//实例化一个文档构建器工厂
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
//通过文档构建器工厂获取一个文档构建器
DocumentBuilder db = dbf.newDocumentBuilder();
//通过文档通过文档构建器构建一个文档实例
Document doc = db.parse("student.xml");
//获取所有名字为 “person” 的节点
NodeList nl1 = doc.getElementsByTagName("Point");
int size1 = nl1.getLength();
System.out.println("该名称的节点长度为:" + size1);
for (int i = 0; i < size1; i++) {
Node n = nl1.item(i);
System.out.println("***"+n.getNodeName()+"\t"+n.getNodeName().length());
NamedNodeMap nm= n.getAttributes();
int len_m=nm.getLength();
for(int k=0;k<len_m;k++){
System.out.println("属性名:"+nm.item(k).getNodeName()+"\t 属性值:"+nm.item(k).getNodeValue());
}
if(nl1.item(i).getChildNodes().getLength()>0){
for(int z=0;z<nl1.item(i).getChildNodes().getLength();z++){
System.out.println(nl1.item(i).getChildNodes().item(z).getNodeName());
if(nl1.item(i).getChildNodes().item(z).getAttributes()!=null){
int len_ls=nl1.item(i).getChildNodes().item(z).getAttributes().getLength();
if(len_ls>0){
for(int x=0;x<len_ls;x++){
System.out.println("属性名:"+nl1.item(i).getChildNodes().item(z).getAttributes().item(x).getNodeName()+"\t 属性值:"+nl1.item(i).getChildNodes().item(z).getAttributes().item(x).getNodeValue());
}
}
}
}
}
//获取 n 节点下所有的子节点。此处值得注意,在DOM解析时会将所有回车都视为 n 节点的子节点。
NodeList nl2 = n.getChildNodes();
//因为上面的原因,在此例中第一个 n 节点有 2 个子节点,而第二个 n 节点则有 5 个子节点(因为多了3个回车)。
int size2 = nl2.getLength();
System.out.println("N节点的第一个子节点的长度为:" + size2);
for (int j = 0; j < size2; j++) {
Node n2 = nl2.item(j);
NamedNodeMap nm1= n2.getAttributes();
if(nm1==null){
break;
}
int len_m1=nm1.getLength();
for(int j1=0;j1<len_m1;j1++){
System.out.println(""+nm1.item(j1).getNodeName()+"\t"+nm1.item(j1).getNodeValue());
}
//还是因为上面的原因,故此要处判断当 n2 节点有子节点的时才输出。
if (n2.hasChildNodes()) {
System.out.println(n2.getNodeName() + " = " +
n2.getFirstChild().getNodeValue());
}
}
}
} catch (ParserConfigurationException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (SAXException ex) {
ex.printStackTrace();
}
}