<?xml version="1.0"?>
<PEOPLE>
<PERSON PERSONID="E01">
<NAME>Tony Blair</NAME>
<ADDRESS>10 Downing Street, London, UK</ADDRESS>
<TEL>(061) 98765</TEL>
<FAX>(061) 98765</FAX>
<EMAIL>[email protected]</EMAIL>
</PERSON>
<PERSON PERSONID="E02">
<NAME>Bill Clinton</NAME>
<ADDRESS>White House, USA</ADDRESS>
<TEL>(001) 6400 98765</TEL>
<FAX>(001) 6400 98765</FAX>
<EMAIL>[email protected]</EMAIL>
</PERSON>
<PERSON PERSONID="E03">
<NAME>Tom Cruise</NAME>
<ADDRESS>57 Jumbo Street, New York, USA</ADDRESS>
<TEL>(001) 4500 67859</TEL>
<FAX>(001) 4500 67859</FAX>
<EMAIL>[email protected]</EMAIL>
</PERSON>
<PERSON PERSONID="E04">
<NAME>Linda Goodman</NAME>
<ADDRESS>78 Crax Lane, London, UK</ADDRESS>
<TEL>(061) 54 56789</TEL>
<FAX>(061) 54 56789</FAX>
<EMAIL>[email protected]</EMAIL>
</PERSON>
</PEOPLE>
package com.xml.dom;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Element;
public class Domtest1 {
public static void main(String[] args) throws Exception {
// 獲取DOM解析器工廠
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// 獲得具體的DOM解析器
DocumentBuilder db = dbf.newDocumentBuilder();
// 解析XML文檔,獲得Document對象(根結點)
Document document = db.parse(new File("candidate.xml"));
//獲取根元素
Element root = document.getDocumentElement();
System.out.println(root.getNodeName());
NodeList list = root.getChildNodes();
// NodeList list = document.getElementsByTagName("PERSON");
System.out.println(countChildElement(list) + "個PERSON\n");
for (int i = 0; i < list.getLength(); i++) {
if (list.item(i).getNodeType() == Node.TEXT_NODE) {
continue;//遇到 “#text” 跳過本次循環
}
Element element = (Element) list.item(i);
NamedNodeMap nnm = list.item(i).getAttributes();
String attrname = nnm.item(0).getNodeName();
String attrvalue = nnm.item(0).getNodeValue();
System.out.println(attrname + ":" + attrvalue);
String content = element.getElementsByTagName("NAME").item(0)
.getFirstChild().getNodeValue();
System.out.println("name:" + content);
content = element.getElementsByTagName("ADDRESS").item(0)
.getFirstChild().getNodeValue();
System.out.println("address:" + content);
content = element.getElementsByTagName("TEL").item(0)
.getFirstChild().getNodeValue();
System.out.println("tel:" + content);
content = element.getElementsByTagName("FAX").item(0)
.getFirstChild().getNodeValue();
System.out.println("fax:" + content);
content = element.getElementsByTagName("EMAIL").item(0)
.getFirstChild().getNodeValue();
System.out.println("email:" + content);
System.out.println("================================================");
}
}
//計算真正的元素格式
private static int countChildElement(NodeList list) {
int validCount = 0;
for (int i = 0; i < list.getLength(); i++) {
if (list.item(i).getNodeType() != Node.TEXT_NODE) {
validCount++;//不對“#text”進行統計
}
}
return validCount;
}
}