java--通過DOM方式對xml文件進行讀取的簡單實例

代碼如下:

package TestDemo;

import javax.naming.NameNotFoundException;
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;
//當xml的編碼和java默認的不一樣時會出現錯誤
//通過DOM方式讀取xml文件
public class DcuDemo {
	public static void dom1() throws Exception{
		
		//先創建一個Documengtbuilderfactory對象
		DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance();
		//創建一個documentBuilder對象
		DocumentBuilder db=dbf.newDocumentBuilder();
		//通過方法parse加載books.xml文件到當前頁面下
		 Document document=db.parse("books.xml");
		 //返回的是一個包含所有book節點的集合
		NodeList booklist= document.getElementsByTagName("book");
		//遍歷包含所有book節點的集合
		for(int i=0;i<booklist.getLength();i++){
			System.out.println("----開始第"+(i+1)+"本書的遍歷----");
			//通過iteam方法獲取每一個book屬性
			Node book=booklist.item(i);
			//遍歷book的屬性
			 NamedNodeMap nnm= book.getAttributes();
			 System.out.println("第"+(i+1)+"本書共有"+ nnm.getLength()+"個屬性");
			//接下來遍歷屬性
			 for(int q=0;q<nnm.getLength();q++){
				 
				Node node= nnm.item(q);
				
				 NodeList list= book.getChildNodes();
				//獲取了屬性名
				 String str1=node.getNodeName();
				 System.out.println("屬性名爲:"+str1);
				 //獲取屬性值
				 String str2=node.getNodeValue();		
				 System.out.println("屬性名值:"+str2);				 
				 //輸出節點的個數
				 System.out.println("第"+(i+1)+"本書的節點書爲:"+list.getLength());
				//打印出節點名和節點值
				 for(int k=0;k<list.getLength();k++){
					Node jiedian= list.item(k);					
					//只有當類型爲Node.ELEMENT_NODE才進行輸出
					if(jiedian.getNodeType()==Node.ELEMENT_NODE){
						//獲取節點名和節點值並輸出
						 String name=jiedian.getNodeName();
						 System.out.print(name+"   ");
						 //因爲element類型value是null,所以不能通過getvalue方法進行讀取
//						 String value1=jiedian.getNodeValue();					 
//						 System.out.println("value");	
						 //獲取節點值的方法並輸出、
//						String value2= jiedian.getFirstChild().getNodeValue();
//						System.out.println(value2);						
						//此方法將會獲取此節點下所有的節點值
						String value3=jiedian.getTextContent();
						System.out.println(value3);												 
					}					
				 }				 				 				
			 }
			 System.out.println("----結束第"+(i+1)+"本書的遍歷----");
		}
		 
	}

	public static void main(String[] args) throws Exception{
		
		dom1();
		
	}
}



發佈了34 篇原創文章 · 獲贊 11 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章