package com.huowolf.dom4j; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; 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; public class Demo1 { //读取xml文档的第二本书:<name>安徒生童话</name> @Test public void read() throws DocumentException { SAXReader reader = new SAXReader(); Document document = reader.read(new File("books.xml")); Element root = document.getRootElement(); Element book = (Element)root.elements("book").get(1); //获取Text String text= book.elementText("name"); System.out.println(text); //获取value String value = book.attributeValue("id"); System.out.println(value); } //在第一本书上添加一个国籍:<language>English</language> @Test public void add() throws DocumentException, IOException { SAXReader reader = new SAXReader(); Document document = reader.read(new File("books.xml")); Element book = document.getRootElement().element("book"); book.addElement("language").setText("English"); //输出文件 XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("books.xml"),"UTF-8")); /* * 格式化输出器可以指定码表 * OutputFormat format = OutputFormat.createPrettyPrint(); * format.setEncoding("gb2312"); * writer = new XMLWriter( System.out, format ); */ writer.write( document ); writer.close(); } //在第一本书的指定位置上添加一个新的售价:<price>95</price> @Test public void add2 ()throws Exception{ SAXReader reader = new SAXReader(); Document document = reader.read(new File("books.xml")); Element book = document.getRootElement().element("book"); List<Element> list = book.elements(); Element price = DocumentHelper.createElement("price"); price.setText("95"); list.add(3, price); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); XMLWriter writer = new XMLWriter(new FileOutputStream("books.xml"), format); writer.write(document); writer.close(); } //删除指定节点:<price>89</price> @Test public void delete() throws DocumentException, IOException { SAXReader reader = new SAXReader(); Document document = reader.read(new File("books.xml")); Element price = (Element) document.getRootElement().element("book").elements("price").get(1); price.getParent().remove(price); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); XMLWriter writer = new XMLWriter(new FileOutputStream("books.xml"), format); writer.write(document); writer.close(); } }
时间: 2024-09-30 05:49:27