1 引入dom4j-2.0.1.jar 包
package xmlparem;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Xmldemo {
public static void main(String[] args) throws DocumentException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
//实例化一个对象
SAXReader sax = new SAXReader();
//获取项目中的xml文件
InputStream input =Xmldemo.class.getClassLoader().getResourceAsStream("book.xml");
//将文件读入内存
Document document=sax.read(input);
//获取根节点
Element root=document.getRootElement();
//获取根节点的内容
// System.out.println(root.getName());
//获取xml数组结构 就是xml的内容
List<Element> bookList= root.elements("book");
List<Book> list = new ArrayList<Book>();
//遍历数组
for (Element book : bookList) {
Book b=new Book();
//将xml的内容写入Book对象中 book 迭代器循环获取xml中id的值
b.setId(book.attributeValue("id"));
//System.out.println(b.getId());
List<Element> childList = book.elements();
for(Element child : childList ) {
//System.out.println(child.getName());
//反射 对象.getClass 获取类 返回值为一个Class类的对象,
Class c = b.getClass();
//动态将xml数据插入book对象中
//getDeclaredMethod() 获取的是类自身声明的所有方法,
//包含public、protected和private方法。
Method m =c.getDeclaredMethod("set"+child.getName().substring(0,1).toUpperCase()+child.getName().substring(1), String.class);
m.invoke(b, child.getText());
}
list.add(b);
}
for(Book b : list) {
System.out.println(b);
}
}
}
解析的xml文件
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book id="1">
<name>冰与火之歌</name>
<author>乔治马丁</author>
<year>2014</year>
<price>89</price>
<language>Chinese</language>
<xxx>123</xxx>
<other></other>
</book>
<book id="2">
<name>安徒生童话</name>
<author>汉斯·克里斯蒂安·安徒生</author>
<year>2004</year>
<price>77</price>
<language>English</language>
<xxx>222</xxx>
<other></other>
</book>
</bookstore>
案例二 :
package work;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Xmldemo01 {
public static void main(String[] args) throws DocumentException {
SAXReader sax=new SAXReader();
InputStream input=Xmldemo01.class.getClassLoader().getResourceAsStream("springmvc-servlet.xml");
Document document=sax.read(input);
Element root=document.getRootElement();
//System.out.println(root.getName());
List<Element> bookList= root.elements("bean");
//System.out.println(bookList);
Map<String, String> map=new HashMap<String, String>();
for (Element element : bookList) {
//System.out.println(element.getName());
//System.out.println(element.attributeValue("name"));
//System.out.println(element.attributeValue("class"));
//System.out.println(element.getText());
//System.out.println("123");
map.put(element.attributeValue("name"), element.attributeValue("class"));
}
for (String key : map.keySet()) {
System.out.println("key:" + key + ",value:" + map.get(key));
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean name="/login.do" class="controller.LoginController"/>
<bean name="/reg.do" class="controller.LoginController"/>
</beans>