XML文件:文件要放在項目根目錄下
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="001">
<姓名>張三</姓名>
<年齡>12</年齡>
<性別>男</性別>
</student>
<student id="002">
<姓名>張三</姓名>
<年齡>12</年齡>
<性別>男</性別>
</student>
</students>
解析代碼:
package TEST;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class A {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newDefaultInstance(); //創(chuàng)建DOM解析器工廠實例
DocumentBuilder db = dbf.newDocumentBuilder(); //從DOM工廠獲取DOM解析器
Document doc = db.parse("Student.xml"); //解析XML文檔,得到Document,即DOM樹
NodeList students = doc.getElementsByTagName("student"); //獲得節(jié)點為student的節(jié)點集合(即兩個student節(jié)點)
System.out.println("節(jié)點個數(shù):"+students.getLength()); //輸出節(jié)點集合中的節(jié)點個數(shù)
for(int i = 0; i<students.getLength();i++) {
Node student = students.item(i); //得到節(jié)點集合中的一個節(jié)點student(其中一個student節(jié)點)
Element element = (Element)student; //將這個節(jié)點強轉成標簽(將這個節(jié)點轉成標簽,便于取元素)
String id = element.getAttribute("id"); //得到屬性(student中的屬性id)
System.out.println(id); //輸出屬性id
NodeList stu_child = student.getChildNodes(); //取出student節(jié)點下的所有子節(jié)點,放到節(jié)點集合stu_child中(姓名、年齡、性別)
for(int j = 0; j<stu_child.getLength(); j++) { //循環(huán)輸出每個節(jié)點(姓名、年齡、性別)
if(stu_child.item(j).getNodeType() == Node.ELEMENT_NODE) { //判斷節(jié)點類型為我們寫的元素節(jié)點(排除掉空格換行)
//stu_child代表student節(jié)點下的整體(姓名、年齡、性別),stu_child.item(j)代表每個節(jié)點,stu_child_item(j).getNodeName()代表節(jié)點名稱(姓名..)
//舉例:stu_child.item(j).getFirstChild()代表姓名下的節(jié)點張三
//舉例:stu_child.item(j).getFirstChild().getNodeValue()代表姓名節(jié)點下的節(jié)點張三的值(即為張三)
System.out.println(stu_child.item(j).getNodeName() + "->" + stu_child.item(j).getFirstChild().getNodeValue());
}
}
}
}
}