DOM4J方式解析XML文件

时间:2023-03-09 03:21:02
DOM4J方式解析XML文件

dom4j介绍

  dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory

  dom4j是一个简单的开源库,用于处理XML、 XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP。

  dom4j下载地址:http://download.****.net/detail/ww6055/8880397

dom4j的使用

  下载了dom4j项目之后,解压缩,将其jar包(我的当前版本叫做dom4j-1.6.1.jar)加入class path下面。

  (Properties->Java Build Path -> Add External JARs...)。

  之后就可以使用其提供的API进行编程。

程序实例:

books.xml文件:(在src/res文件夹下)

DOM4J方式解析XML文件

Book.java实体类:

public class Book {
    private String id;
    private String name;
    private String price;
    private String author;
    private String year;
    private String language;
    public String getLanguage() {
        return language;
    }
    public void setLanguage(String language) {
        this.language = language;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPrice() {
        return price;
    }
    public void setPrice(String price) {
        this.price = price;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    public String getYear() {
        return year;
    }
    public void setYear(String year) {
        this.year = year;
    }
}

DOM4J解析XML文件Dom4jTest.java(注:文件中需要导入的Attribute、Document、Element、SAXReader都是DOM4J包下的):

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
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 Dom4jTest {
    public static void main(String[] args) {
        //通过SAXReader的对象reader的read方法加载books.xml文件,获取Document对象
        SAXReader reader = new SAXReader();
        try {
            Document doc=reader.read(new File("src/res/books.xml"));
            //通过Document对象获取根节点
            Element bookstore=doc.getRootElement();
            //通过element对象的elementIterator方法获取迭代对象
            Iterator it= bookstore.elementIterator();
            //遍历迭代器,获取根节点中的信息
            while(it.hasNext()){
                System.out.println("=============开始遍历某一本书=============");
                Element book=(Element) it.next();
                List<Attribute> bookAttr=book.attributes();
                for(Attribute attr:bookAttr){
                    System.out.println("属性名:"+attr.getName()+"---------------属性值:"+attr.getValue());
                }
                Iterator itt = book.elementIterator();
                while(itt.hasNext()){
                    //book节点下的任意一个子节点
                    Element bookChild = (Element) itt.next();
                    System.out.println("节点名:"+bookChild.getName()+" ***** 节点值:"+bookChild.getStringValue());
                }
                System.out.println("=============结束遍历某一本书=============");
            }
            
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
}