您的位置:首页 > 编程语言 > Java开发

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

2016-11-10 10:14 441 查看

问: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代码截图:



(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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java xml