解析xml文件

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值