JAVA中使用DOM解析XML文件:
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.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class DOMtest {
public static void main(String[] args) {
// 創建DocumentBuilderFactory的對象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
//創建DocumentBuilder對象
DocumentBuilder db = dbf.newDocumentBuilder();
//通過documentBuilder對象 的parser方法加載books。xml文件到當前項目下
Document document = db.parse("books.xml");
//獲取所有book節點的集合
NodeList booklist = document.getElementsByTagName("book");
System.out.println("一共有"+booklist.getLength()+"本書");
//遍歷每一個book節點
for(int i= 0; i<=booklist.getLength();i++){
//通過item(i)方法獲取book節點
Node book = booklist.item(i);
//獲取book節點的所有屬性集合
NamedNodeMap attrs = book.getAttributes();
System.out.println("第"+(i+1)+"本書共有"+attrs.getLength()+"個屬性");
//遍歷book的屬性
for(int j = 0;j<attrs.getLength();j++){
//通過item方法獲取book節點的屬性
Node attr = attrs.item(j);
//獲取屬性名
System.out.print("屬性名:"+attr.getNodeName());
//獲取屬性值
System.out.println("--屬性值"+attr.getNodeValue());
NodeList chilNod = book.getChildNodes();
System.out.println("第"+(i+1)+"本書共有"+chilNod.getLength()+"個子節點");
for(int k = 0;k<chilNod.getLength();k++){
Node chil = chilNod.item(k);
//區分text 類型node
if(chilNod.item(k).getNodeType() == Node.ELEMENT_NODE){
System.out.print("子節點名:"+chil.getNodeName()+":");
System.out.println(" 子節點值:"+chilNod.item(k).getFirstChild().getNodeValue());
//System.out.println("子節點值:"+chilNod.item(k).getTextContent());
}
}
}
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
- 創建DocumentBuilderFactory的對象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- 創建DocumentBuilder對象
- 通過documentBuilder對象的parser方法加載xml文件到當前項目下
- 獲取所有XML文件內節點的集合 getElementsByTagName()方法
- 遍歷每一個節點
- 通過item(i)方法獲取節點
- 獲取節點的所有屬性集合 getAttributes()方法
- 遍歷節點的屬性 getNodeValue()
- 通過item()方法獲取節點的屬性
- 通過getNodeName()和getNodeValue()獲取屬性名和屬性值
- 通過getChildNodes()獲取子節點的集合
- 遍 歷子節點,獲取子節點屬性名和屬性值 (注意: 區分text 類型的node,使用判斷 if(chilNod.item(k).getNodeType() == Node.ELEMENT_NODE))
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.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class DOMtest {
public static void main(String[] args) {
// 創建DocumentBuilderFactory的對象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
//創建DocumentBuilder對象
DocumentBuilder db = dbf.newDocumentBuilder();
//通過documentBuilder對象 的parser方法加載books。xml文件到當前項目下
Document document = db.parse("books.xml");
//獲取所有book節點的集合
NodeList booklist = document.getElementsByTagName("book");
System.out.println("一共有"+booklist.getLength()+"本書");
//遍歷每一個book節點
for(int i= 0; i<=booklist.getLength();i++){
//通過item(i)方法獲取book節點
Node book = booklist.item(i);
//獲取book節點的所有屬性集合
NamedNodeMap attrs = book.getAttributes();
System.out.println("第"+(i+1)+"本書共有"+attrs.getLength()+"個屬性");
//遍歷book的屬性
for(int j = 0;j<attrs.getLength();j++){
//通過item方法獲取book節點的屬性
Node attr = attrs.item(j);
//獲取屬性名
System.out.print("屬性名:"+attr.getNodeName());
//獲取屬性值
System.out.println("--屬性值"+attr.getNodeValue());
NodeList chilNod = book.getChildNodes();
System.out.println("第"+(i+1)+"本書共有"+chilNod.getLength()+"個子節點");
for(int k = 0;k<chilNod.getLength();k++){
Node chil = chilNod.item(k);
//區分text 類型node
if(chilNod.item(k).getNodeType() == Node.ELEMENT_NODE){
System.out.print("子節點名:"+chil.getNodeName()+":");
System.out.println(" 子節點值:"+chilNod.item(k).getFirstChild().getNodeValue());
//System.out.println("子節點值:"+chilNod.item(k).getTextContent());
}
}
}
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
