package cn.itcast.dom4j;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
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文档内容:得到第一个书名节点的值
@Test
public void test1() throws DocumentException{
//1.得到解析器
SAXReader reader = new SAXReader();
//2.解析xml文档
Document document = reader.read(new File("src/book.xml"));
String content = document.getRootElement().element("书").element("书名").getText();
System.out.println(content);
}
//查找xml文档内容:得到第二个书名节点的值
@Test
public void test2() throws DocumentException{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/book.xml"));
Element book
= (Element) document.getRootElement().elements("书").get(1);
String content = book.element("书名").getText();
System.out.println(content);
}
//查找xml文档内容:得到书名节点的属性
@Test
public void test3() throws DocumentException{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/book.xml"));
Element root = document.getRootElement();
//书架
String attrValue = root.element("书").element("书名").attributeValue("name");
System.out.println(attrValue);
}
//迭代出文档所有内容
@Test
public void test4() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/book.xml"));
Element root = document.getRootElement();
//书架
list(root);
}
public void list(Element e){
System.out.println(e.getName());
List<Element> list = e.elements();
for(Element child : list){
list(child);
}
}
//改:将第一本书的价格改为39:
<售价>28.00元</售价>
@Test
public void test5() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/book.xml"));
Element root = document.getRootElement();
//书架
root.element("书").element("售价").setText("39.00元");
//把更新后的内存数据写回到xml文档中
fileWriter
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("gb2312");
XMLWriter writer = new XMLWriter(new FileWriter("src/book.xml"),format);
writer.write(document);
writer.close();
}
//删
@Test
public void test6() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/book.xml"));
Element root = document.getRootElement();
//书架
Element price = root.element("书").element("售价");
price.getParent().remove(price);
//把更新后的内存数据写回到xml文档中
fileWriter
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/book.xml"),"UTF-8"));
writer.write(document);
writer.close();
}
//增加:为第一本书添加一个售价结点
@Test
public void test7() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/book.xml"));
Element root = document.getRootElement();
//书架
Element price = DocumentHelper.createElement_x_x("售价");
price.setText("89元");
root.element("书").add(price);
//把更新后的内存数据写回到xml文档中
fileWriter
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/book.xml"),"UTF-8"),format);
writer.write(document);
writer.close();
}
//增加2:为第一本书添加一个售价结点
@Test
public void test8() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/book.xml"));
Element root = document.getRootElement();
//书架
//把更新后的内存数据写回到xml文档中
fileWriter
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/book.xml"),"UTF-8"),format);
writer.write(document);
writer.close();
}
//增加3:在指定位置添加一个售价结点(特殊,小心)
@Test
public void test9() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/book.xml"));
Element root = document.getRootElement();
//书架
List list = root.element("书").elements();
//创建要插入的节点
Element price = DocumentHelper.createElement_x_x("售价");
price.setText("89元");
list.add(2, price);
//把更新后的内存数据写回到xml文档中
fileWriter
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/book.xml"),"UTF-8"),format);
writer.write(document);
writer.close();
}
}
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
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 {
}