- 新建java project, 在src下建包xml, 包里新建book1.xml文档,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<书架>
<书 name="yyyyyy" id="111">
<售价>20元</售价>
<售价>22元</售价>
<书名>Java就业培训教程</书名>
<作者>张孝祥</作者>
<出版社>清华大学出版社</出版社>
</书>
<书>
<书名>JavaScript网页开发</书名>
<作者>张孝祥</作者>
<售价>28.00元</售价>
</书>
</书架>
- 建包cn.itcast.dom4j,包里建Demo1.java, 代码如下:
package cn.itcast.Dom4j
import java.io.FileInputStream
import java.io.FileOutputStream
import java.util.List
import javax.xml.parsers.SAXParser
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 {
@Test
public void read() throws Exception{
//读取book.xml文档的内容
//1. 读取XML文件,获得document对象
SAXReader reader=new SAXReader()
Document document =reader.read("src/xml/book1.xml")
//2.获取文档的根节点.
Element root=document.getRootElement()
//3.获取某个节点的子节点,此处获取第一个书节点
Element book=root.element("书")
//获取书结点的另一种方式:获取文档的所有书结点,然后根据索引号取
//Element book=root.elements("书").get(0)
//4.获取书结点的第二个售价结点
Element price=(Element) book.elements("售价").get(1)
System.out.println(price.getText())
//5.获取第一个书结点的name属性值
String name=book.attribute("name").getValue()
System.out.println("name="+name)
}
@Test
public void add() throws Exception{
//向book1.xml中第一个书结点中添加出版社结点
//1. 读取XML文件,获得document对象
SAXReader reader=new SAXReader()
Document document =reader.read("src/xml/book1.xml")
//2. 创建出版社结点,并设置其文本内容
Element publish=DocumentHelper.createElement("出版社")
publish.setText("清华大学出版社")
//3. 把新创建的结点挂到其父结点下
document.getRootElement().element("书").add(publish)
//4. 把修改后的document由内存写回book1.xml
//首先设置写回格式
OutputFormat format = OutputFormat.createPrettyPrint()
format.setEncoding("UTF-8")
//写回book1.xml文档
XMLWriter writer=new XMLWriter(new FileOutputStream("src/xml/book1.xml"),format)
writer.write(document)
writer.close()
}
@Test
public void update() throws Exception{
//修改book1.xml中第一个书结点中的“出版社”结点
//1. 读取XML文件,获得document对象
SAXReader reader=new SAXReader()
Document document =reader.read("src/xml/book1.xml")
//2. 获取“出版社”结点
Element publish=document.getRootElement().element("书").element("出版社")
publish.setText("电子工业出版社")
//4. 把修改后的document由内存写回book1.xml
//首先设置写回格式
OutputFormat format = OutputFormat.createPrettyPrint()
format.setEncoding("UTF-8")
//写回book1.xml文档
XMLWriter writer=new XMLWriter(new FileOutputStream("src/xml/book1.xml"),format)
writer.write(document)
writer.close()
}
@Test
public void delete() throws Exception{
//删除book1.xml中的“出版社”结点
//1. 读取XML文件,获得document对象
SAXReader reader=new SAXReader()
Document document =reader.read("src/xml/book1.xml")
//2. 获取“出版社”结点
Element publish=document.getRootElement().element("书").element("出版社")
//获取“出版社”结点的父结点,利用父结点删除
publish.getParent().remove(publish)
//4. 把修改后的document由内存写回book1.xml
//首先设置写回格式
OutputFormat format = OutputFormat.createPrettyPrint()
format.setEncoding("UTF-8")
//写回book1.xml文档
XMLWriter writer=new XMLWriter(new FileOutputStream("src/xml/book1.xml"),format)
writer.write(document)
writer.close()
}
}