java 使用DOM4J解析XML文档

DOM4J

dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的
JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,
同时它也是一个开放源代码的软件,可以在SourceForge上找到它。

使用步骤

  1. 下载DOM4J的jar包,并导入到工程中

  2. 创建 SAXReader对象

     SAXReader reader = new SAXReader();
    
  3. 通过read方法加载xml

     Document document = reader.read(new File("book.xml"));
    
  4. 获取根节点

     Element bookstore = document.getRootElement();
    
  5. 通过elementIterator方法获取迭代器

     Iterator it = bookstore.elementIterator();
    
  6. 遍历迭代器,获取根节点下节点

     while(it.hasNext())
         Element book = (Element) it.next();
    
  7. 获取节点属性

     List<Attribute> attrs = book.attributes();
         for(Attribute attr : attrs)
     	{
     		System.out.println("属性"+attr.getName()+":"+attr.getValue());
     	}
    
  8. 获取节点的子节点。
    过程为重复5.6.7。

示例

下面是一个简单的小例子,说明一下使用过程及步骤。

book.xml

<?xml version="1.0" encoding="UTF-8" ?>
<bookstore>
    <book id="1">
		<name>111</name>
		<author>222</author>
	</book>
	<book id="2">
		<name>333</name>
		<author>444</author>
	</book>
</bookstore> 

DOM4J.java

package com.lpp.test;

import java.io.File;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class DOM4J
{

    public static void main(String[] args)
    {
	    // TODO Auto-generated method stub
	    //创建 SAXReader对象
	    SAXReader reader = new SAXReader();
	    
	    try
	    {
//通过read方法加载xml

Document document = reader.read(new File("book.xml"));
		    //获取根节点
		    Element bookstore = document.getRootElement();
		    //通过elementIterator方法获取迭代器
		    Iterator it = bookstore.elementIterator();
		    //遍历迭代器,获取根节点下节点
	    	
		    while(it.hasNext())
		    {
		    	System.out.println("开始遍历");
		    	Element book = (Element) it.next();
		    	
		    	List<Attribute> attrs = book.attributes();
		    	for(Attribute attr : attrs)
		    	{
		    		System.out.println("属性"+attr.getName()+":"+attr.getValue());
		    	}
		    	
		    	Iterator it2 = book.elementIterator();
		    	
		    	while (it2.hasNext())
		    	{
		    		Element bookChild = (Element) it2.next();   

					System.out.println("节点"+bookChild.getName() + ":" + bookChild.getStringValue());
				}
				System.out.println("结束遍历");
			}
		} catch (DocumentException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
    	}
    	
	}

}
posted @ 2017-08-12 22:52  ll7  阅读(566)  评论(0编辑  收藏  举报