Xml文件
Keys:
標籤</>,<?xml version=”1.0” encoding=”UTF-8”?>
樹狀節點
在Java程序中如何獲取xml文件的內容(解析)
解析的目的:獲取節點名、節點值、屬性名、屬性值
解析的四種方式:DOM, SAX, DOM4J, JDOM. 前兩個是sun官方
DOM解析方式(代碼及註解)
package com.darron.test;
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;
public classTest1 {
/**
* 通過DOM方式解析XML文件 author Darron date 2016.3.16
* */
public static void main(String[] args) {
// 創建一個DocumentBuilderFactory對象
DocumentBuilderFactorydbf =DocumentBuilderFactory.newInstance();
try {
// 創建一個DocumentBuilder對象
DocumentBuilderdb = dbf.newDocumentBuilder();
// DocumentBuilder.parse(“url”)加載文件指向Document (導包org.w3c.dom)
Documentdocument = db.parse(new File("books.xml"));
// 獲取所有節點(返回的list)
NodeListbooklist = document.getElementsByTagName("book");
for (int i = 0; i < booklist.getLength(); i++) {
System.out.println("=====下面開始遍歷第" + (i + 1) + "本書=====");
// 遍歷每一個節點,通過item方法獲取一個book節點,索引從0開始
Nodebook = booklist.item(i);
// 獲取book節點裏面的所有屬性
NamedNodeMapattrs = book.getAttributes();
System.out.println("第" + (i + 1) + "本書共有" + attrs.getLength());
// 遍歷book屬性
for (int j = 0; j < attrs.getLength(); j++) {
// 通過item方法獲取屬性通過getNodeName獲得名通過getNodeValue獲得值
System.out.println("屬性名" + attrs.item(j).getNodeName());
System.out.println("屬性名" + attrs.item(j).getNodeValue());
}
System.out.println("=====結束=====\n");
}
}catch(Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Xml文件
<?xml version="1.0"encoding="UTF-8"?>
<bookstore>
<bookid="1">
<name>三體</name>
<author>劉念慈</author>
<year>2015</year>
<price>50</price>
</book>
<bookid="2">
<name>神們自己</name>
<author>阿西莫夫</author>
<year>2016</year>
<price>10</price>
</book>
</bookstore>
備註:此外的三種方式不更多的介紹。注意getElementsByTagName("book")方法的參數需要與xml文件匹配。