XML文件解析示例

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());
            }
        }
    }   
}

}

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容