xml-使用dom去遍歷xml檔案和獲取指定節點資訊
阿新 • • 發佈:2019-01-30
classes.xml:
TestXml1.java<?xml version="1.0" encoding="utf-8" ?> <class> <stu hobby="read"> <name>楊過</name> <sex>男</sex> <age>30</age> <intro>學習刻苦</intro> </stu> <stu> <name>林青霞</name> <sex>女</sex> <age>32</age> <intro>是一個好學生</intro> </stu> </class>
package com.hyj; 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; public class TestXml1 { public static void main(String []args) throws Exception{ //建立一個DocumentBuilderFactory,得到建立DOM解析器工廠 DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); //通過DocumentBuilderFactory,得到一個DocumentBuilder物件(解析器物件) DocumentBuilder dBuilder=dbf.newDocumentBuilder(); //指定解析哪個xml檔案 Document document=dBuilder.parse("src/classes.xml"); // System.out.println(document); read(document); } // static boolean flag=false; //具體的查詢某個學生的資訊(先手第一個學生的所有資訊) //請考慮如何獲得某個元素的屬性值,(取出) public static void read(Document doc){ NodeList n1=doc.getElementsByTagName("stu"); //取出第一個學生 Element stu=(Element)n1.item(0); System.out.println("學生的愛好是"+stu.getAttribute("hobby")); Element name=(Element) stu.getElementsByTagName("name").item(0); System.out.println(name.getTextContent()); // //獲得名為stu的節點 // NodeList nodelist=doc.getElementsByTagName("stu"); // //分別學生的node // for(int a=0;a<nodelist.getLength();a++){ // Node node=nodelist.item(a); // NodeList chilenodelist=node.getChildNodes(); // for(int b=0;b<chilenodelist.getLength();b++){ // if(chilenodelist.item(b).getNodeType()==chilenodelist.item(b).ELEMENT_NODE){ // System.out.println(chilenodelist.item(b).getNodeName()+" : "+chilenodelist.item(b).getTextContent()); // // } // } // System.out.println("----------------------------------------"); // } // System.out.println(nodelist.getLength()); //取出node的子節點 // NodeList nodelist=node.getChildNodes(); // for(int i=0;i<nodelist.getLength();i++){ // //再去顯示 // Node n=nodelist.item(i); // if(n.getNodeName().equals("stu")){ // flag=true; // read(n); // flag=false; // } // if(flag==true&&n.getNodeType()==n.ELEMENT_NODE)System.out.println(n.getNodeName()); // read(n); // } } //遍歷該xml檔案 public static void list(Node node){ if(node.getNodeType()==node.ELEMENT_NODE) System.out.println("名字:"+node.getNodeName()); //取出node的子節點 NodeList nodelist=node.getChildNodes(); for(int i=0;i<nodelist.getLength();i++){ //再去顯示 Node n=nodelist.item(i); list(n); } } }