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();
}
}