Dom4j如何操作Xml文件

  dom4j是一个Java的XML API,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。

  对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,例如hibernate,包括sun公司自己的JAXM也用了Dom4j。

     通过一个案例来了解dom4j如何解析xml文件的。


       对应的xml文件

<?xml version="1.0" encoding="utf-8"?>
<Person>
<Student>
	<name>Tom</name>
	<age>22</age>
	<qq>11001441</qq>
</Student>
</Person>
 对应的操作类
	@Test
	public void testXml() throws Exception {
		SAXReader reader = new SAXReader();//创建一个SAXReader对象
		Document doc = reader.read(new File("./src/demo.xml"));//获取document对象,读取指定目录下的xml文件
		//通过Student根节点多去他所有的子节点得到了一个iterator迭代器
		Iterator<Element> it_element = doc.getRootElement().elementIterator("Student");
		//遍历Student
		while(it_element.hasNext()){
			Element element = it_element.next();
			//得到所有子节点的对应的值
			System.out.println(element.getStringValue());
			//根据子节点获取对应的值
			String age = element.elementText("age");
			System.out.println(age);
		}
	}
以上这种事对指定某个节点获取对应的值操作的,另外一种见下文:

public class XmlTest {
	
	@Test
	public void testXml() throws Exception {
		SAXReader reader = new SAXReader();//创建一个SAXReader对象
		Document doc = reader.read(new File("./src/demo.xml"));//获取document对象,读取指定目录下的xml文件
		Element element = doc.getRootElement();
		this.listNodes(element);
	}
	   //遍历当前节点下的所有节点  
    public void listNodes(Element node){  
        System.out.println("当前节点的名称:" + node.getName());  
        //首先获取当前节点的所有属性节点  
        List<Attribute> list = node.attributes();  
        //遍历属性节点  
        for(Attribute attribute : list){  
            System.out.println("属性"+attribute.getName() +":" + attribute.getValue());  
        }  
        //如果当前节点内容不为空,则输出  
        if(!(node.getTextTrim().equals(""))){  
             System.out.println( node.getName() + ":" + node.getText());    
        }  
        //同时迭代当前节点下面的所有子节点  
        //使用递归  
        Iterator<Element> iterator = node.elementIterator();  
        while(iterator.hasNext()){  
            Element e = iterator.next();  
            listNodes(e);  
        }  
    }  
}
 以上获取所有节点的名称和对应的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值