您的位置:首页 > 其它

使用dom4j工具包实现对xml文件的增删改查和乱码问题的处理

2012-05-02 20:40 417 查看
使用dom4j工具包实现对xml文件的增删改查,xml文件为:

<?xml version="1.0" encoding="gb2312"?>

<书架>
<书>
<书名 name="the daught of sea">海的女儿</书名>
<作者>安徒生</作者>
<售价>50.0元</售价>
</书>
<书>
<书名>卖火柴的小女孩</书名>
<作者>安徒生</作者>
<售价>28.0元</售价>
</书>
</书架>


实现代码为:

package com.java.dom;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;

public class DomParse {

@Test
public void find() throws DocumentException {
//创建读取器
SAXReader reader = new SAXReader();
//将读取的结果放在document中
Document doc = reader.read(new File("src/books.xml"));
//得到根节点
Element root = doc.getRootElement();
Element book = (Element) root.elements("书").get(0);
String value = book.element("书名").attributeValue("name");
System.out.println(value);

}

@Test
public void add() throws DocumentException, IOException {
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("src/books.xml"));
Element root = doc.getRootElement();
Element book = (Element) root.elements("书").get(0);
book.addElement("售价").setText("39.0元");

//创建一个漂亮的输出器
OutputFormat format = OutputFormat.createPrettyPrint();
//设置输出器的码表
format.setEncoding("gb2312");
XMLWriter writer = new XMLWriter(new FileOutputStream("src/books.xml"),format);
//将更改的xml文件写回
writer.write(doc);
}

@Test
public void delete() throws DocumentException, IOException {
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("src/books.xml"));
Element root = doc.getRootElement();
Element book = (Element) root.elements("书").get(1);
Element price = (Element) book.elements("售价").get(0);
book.remove(price);

OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("gb2312");
XMLWriter writer = new XMLWriter(new FileOutputStream("src/books.xml"),format);
writer.write(doc);

}

@Test
public void modify() throws DocumentException, IOException {
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("src/books.xml"));
Element root = doc.getRootElement();
Element book = (Element) root.elements("书").get(0);
Element price = (Element) book.elements("作者").get(0);
price.setText("Hello");

OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("gb2312");
XMLWriter writer = new XMLWriter(new FileOutputStream("src/books.xml"),format);
writer.write(doc);
}

}


运行结果为:

<?xml version="1.0" encoding="gb2312"?>

<书架>
<书>
<书名 name="the daught of sea">海的女儿</书名>
<作者>Hello</作者>
<售价>50.0元</售价>
<售价>39.0元</售价>
</书>
<书>
<书名>卖火柴的小女孩</书名>
<作者>安徒生</作者>
</书>
</书架>


乱码问题通过OutputFormat类来解决,根据xml文件中使用的码表,设置输出器的码表,而且XM4LWrite中的参数第一个为字节输出,也可使用可更改码表的字符输出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐