DOM4J方式解析、创建XML文件(实例)

来源:互联网 发布:js截取字符串的方法 编辑:程序博客网 时间:2024/05/01 21:58

问:DOM4J是什么?

Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP

问:使用DOM4J需要什么条件?

使用DOM4J方式解析XML文档,需要在工程文件中导入dom4j.jar包 下载链接

(1)示例代码:

import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.nio.charset.MalformedInputException;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;public class Dom4JResolve {    public static void main(String[] args)throws IOException {        String file = "file/books.xml";        Dom4JResolve dom4jResolve = new Dom4JResolve();        //1.DOM4J方式解析xml文件        try {            List<Book> bookList = dom4jResolve.read(file);            for(Book book : bookList){                System.out.println(book.toString());            }        } catch (DocumentException e) {            e.printStackTrace();        }        //2.DOM4J方式创建xml文件        dom4jResolve.dom4jCreateXml();    }    /**     * Dom4j方式解析xml文件     * @param fileName     * @return     * @throws MalformedInputException     * @throws DocumentException     */    public List<Book> read(String fileName) throws MalformedInputException,DocumentException{        List<Book> books = new ArrayList<Book>();        Book book = new Book();        //创建SAXReader实例        SAXReader reader = new SAXReader();        //从文件读取xml        Document document = reader.read(new File(fileName));        //获取root节点        Element root = document.getRootElement();        System.out.println("xml文件根节点:"+root.getName());        //方式1.枚举        for(Iterator i = root.elementIterator();i.hasNext();){            Element element = (Element) i.next();            book.setId(Integer.parseInt(element.attributeValue("id")));            book.setBookName(element.elementText("bookName"));            book.setAuthor(element.elementText("author"));            book.setYear(element.elementText("year"));            books.add(book);            book = new Book();        }        return books;    }    /**     * dom4j方式创建xml文件     */    public void dom4jCreateXml(){        //创建document文档          Document document = DocumentHelper.createDocument();          //增加根节点          Element bookstore = document.addElement("bookstore");          //增加子元素          Element book1 = bookstore.addElement("book");          Element name1 = book1.addElement("name");          Element title1 = book1.addElement("author");          Element author1 = book1.addElement("year");          Element book2 = bookstore.addElement("book");          Element name2 = book2.addElement("name");          Element title2 = book2.addElement("author");          Element author2 = book2.addElement("year");          //为子节点添加属性          book1.addAttribute("id", "1");          //为元素添加内容          name1.setText("冰与火之歌");          title1.setText("乔治马丁");          author1.setText("2004");          book2.addAttribute("id", "2");          name2.setText("格林童话");          title2.setText("格林");          author2.setText("2006");          //实例化输出格式对象          OutputFormat format = OutputFormat.createPrettyPrint();          //设置输出编码          format.setEncoding("UTF-8");          //创建需要写入的File对象          File file = new File("file/cdom4j.xml");          //生成XMLWriter对象,构造函数中的参数为需要输出的文件流和格式          XMLWriter writer;        try {            writer = new XMLWriter(new FileOutputStream(file), format);            //开始写入,write方法中包含上面创建的Document对象            writer.write(document);        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        } catch (FileNotFoundException e) {            e.printStackTrace();        }catch (IOException e) {            e.printStackTrace();        }    }}

(2)Book实体类代码:

public class Book {    private int id;//id-bok    private String bookName;//书名    private String author;//作者    private String year;//年份    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getBookName() {        return bookName;    }    public void setBookName(String bookName) {        this.bookName = bookName;    }    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;    }    @Override    public String toString() {        return this.id+"---"+this.bookName+"---"+this.author+"---"+this.year;    }}

(3)创建的cdom4j.xml代码截图:

创建的cdom4j.xml代码截图

(4)用于解析的books.xml代码:

<?xml version="1.0" encoding="UTF-8"?><bookstore>  <book id="1">    <bookName>冰与火之歌</bookName>    <author>乔治马丁</author>    <year>2004</year>  </book>  <book id="2">    <bookName>格林童话</bookName>    <author>格林</author>    <year>2006</year>  </book></bookstore>
0 0
原创粉丝点击