- //book.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <书架>
- <书>
- <书名 name="jack">Java就业培训教程</书名>
- <作者>张孝祥</作者>
- <售价>49.00元</售价>
- <售价>34元</售价>
- </书>
- <书>
- <书名>JavaScript网页开发</书名>
- <作者>张孝祥</作者>
- <售价>28.00元</售价>
- </书>
- </书架>
- package com.dom4j;
- import java.io.File;
- import java.io.FileOutputStream;
- 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;
- import org.junit.Test;
- import org.xml.sax.DocumentHandler;
- public class Demo1 {
- //获取指定标签的值。
- @Test
- public void read() throws Exception{
- SAXReader reader = new SAXReader();
- Document document = reader.read(new File("src/book.xml"));
- Element root = document.getRootElement();
- Element book = (Element) root.elements().get(1);
- String value = book.element("书名").getText();
- System.out.println(value);
- }
- //获取指定标签的属性值。
- @Test
- public void readAtt() throws Exception{
- SAXReader reader = new SAXReader();
- Document document = reader.read(new File("src/book.xml"));
- Element root = document.getRootElement();
- Element book = (Element) root.elements().get(0);
- // String value = book.element("书名").attribute("name").getValue();
- String value = book.element("书名").attributeValue("name");
- System.out.println(value);
- }
- //往xml文档中写数据以及出现的乱码问题。
- @Test
- public void add() throws Exception{
- SAXReader reader = new SAXReader();
- Document document = reader.read(new File("src/book.xml"));
- Element book = (Element) document.getRootElement().element("书");
- book.addElement("售价").setText("34元");
- /*
- XMLWriter writer = new XMLWriter(new FileWriter("src/book.xml"));
- writer.write( document );
- writer.close();
- */
- //用字节流
- OutputFormat format = OutputFormat.createPrettyPrint();
- format.setEncoding("UTF-8");
- XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
- writer.write( document );
- writer.close();
- }
- }
用dom4j操作xml文档时,要巧用手上的API。每当需要用到一门第三方的技术时,可以先简略看下它的API,看看它的快速入门。
当出现乱码时,可能是编码出现了错误,譬如xml文档中指定的是gb2312,而在用dom4j读取时用的是UTF-8的码表,所以会出现乱码。
用dom4j操作xml文档解决乱码的诀窍:
1.设置一个格式输出器(漂亮格式的或者是紧凑格式的),设置它的编码方式与xml文档的编码方式一致。
format.setEncoding("UTF-8");
2.用字节流输出,它采用的是设置的编码方式
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);