1 xml文件
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book id="1">
<name>冰與火之歌</name>
<author>喬治馬丁</author>
<year>2014</year>
<price>89</price>
</book>
<book id="2" class="2">
<name>安徒生童話</name>
<year>2004</year>
<price>77</price>
<language>English</language>
</book>
<book id="2" class="2" name="桑格">
</book>
</bookstore>
2. 讀取xml文件類
package com.wx;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.IOException;
import java.io.InputStream;
public class ReadXML1 {
public static Object getObject(){
InputStream resourceAsStream = null;
try{
//創建文檔對象
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder();
Document doc;
resourceAsStream = ReadXML1.class.getClassLoader().getResourceAsStream("test.xml");
doc = builder.parse(resourceAsStream);
//獲取包含類名的文本節點
//獲取根節點---bookstore
Element root = doc.getDocumentElement();
String tagName = root.getTagName();
System.out.println("根節點名稱:"+tagName);
//獲取bookstore下的孩子,也就是book元素節點和text文本節點
NodeList childNodes = root.getChildNodes();
if(childNodes != null){
for(int i = 0; i < childNodes.getLength();i++){
//獲取bookstore下節點,包括文本節點(將回車看車文本節點)和元素節點
Node item = childNodes.item(i);
if(item.getNodeType() == Node.ELEMENT_NODE){
//獲取元素節點中的屬性,也就是book中的屬性
NamedNodeMap attributes = item.getAttributes();
System.out.println(i+" 有"+attributes.getLength()+"個屬性");
//如果元素標籤中有屬性,遍歷該屬性
if(attributes.getLength()>0){
//遍歷屬性
for(int j = 0; j < attributes.getLength();j++){
Node item1 = attributes.item(j);
System.out.println("屬性:"+item1.getNodeName()+",屬性值:"+item1.getNodeValue());
}
}
//獲取book下的節點
NodeList childNodes1 = item.getChildNodes();
if(childNodes1.getLength()>0){
for(int k=0; k < childNodes1.getLength(); k++){
//獲取book下每個節點
Node item1 = childNodes1.item(k);
if(item1.getNodeType() == Node.ELEMENT_NODE){
System.out.println(item1.getNodeName()+":"+item1.getFirstChild().getNodeValue());
}
}
}
}
}
}
// NodeList nl = doc.getElementsByTagName("className");
// Node classNode = nl.item(0).getFirstChild();
// String cName = "com.wx."+classNode.getNodeValue();
// //通過類名生成實例對象並返回
// Class<?> aClass = Class.forName(cName);
// Object obj = aClass.newInstance();
return null;
}catch (Exception e){
e.printStackTrace();
}finally {
try {
resourceAsStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
public static void main(String[] args) {
ReadXML1.getObject();
}
}