您的位置:首页 > 其它

dom4j解析xml增删改查

2014-09-18 20:31 381 查看
<span style="font-size:18px;"><strong>记得导包</strong></span>
<strong><span style="font-size:18px;">1.新建Demo4jDemo2.java:</span></strong>
<strong><span style="font-size:18px;">import java.io.FileOutputStream;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class Demo4jDemo2 {
//操作元数据
public void attr() throws Exception{
SAXReader reader = new SAXReader();
Document dom = reader.read("book.xml");
Element root = dom.getRootElement();

Element bookEle = root.element("书");

//bookEle.addAttribute("出版社", "传智出版社");//增

//		String str = bookEle.attributeValue("出版社");//查
//		System.out.println(str);

Attribute attr = bookEle.attribute("出版");//删
attr.getParent().remove(attr);

XMLWriter writer = new XMLWriter(new FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());
writer.write(dom);
writer.close();
}
//1、增
public void add()throws Exception{
SAXReader reader = new SAXReader();
Document dom = reader.read("book.xml");
Element root = dom.getRootElement();
//1、凭空创建<特价>节点,设置标签体
Element price2Ele = DocumentHelper.createElement("特价");
price2Ele.setText("40.0元");
//2、获取父标签<书>将特价节点挂载上去
Element bookEle = root.element("书");
bookEle.add(price2Ele);

//将内存中的dom树会写到xml文件中,从而使xml中的数据进行更新
//		FileWriter writer = new FileWriter("book.xml");
//		dom.write(writer);
//		writer.flush();
//		writer.close();
XMLWriter writer = new XMLWriter(new FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());
writer.write(dom);
writer.close();
}
//2、删
public void del() throws Exception{
SAXReader reader = new SAXReader();
Document dom = reader.read("book.xml");
Element root = dom.getRootElement();

Element price2Ele = root.element("书").element("特价");
price2Ele.getParent().remove(price2Ele);

XMLWriter writer = new XMLWriter(new FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());
writer.write(dom);
writer.close();
}

//3.改
public void update()throws Exception{
SAXReader reader = new SAXReader();
Document dom = reader.read("book.xml");
Element root = dom.getRootElement();

root.element("书").element("特价").setText("4.0元");

XMLWriter writer = new XMLWriter(new FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());
writer.write(dom);
writer.close();
}

//4.查
public void find() throws Exception{
SAXReader reader = new SAXReader();
Document dom = reader.read("book.xml");
Element root = dom.getRootElement();

List<Element> list =  root.elements();

Element book2Ele = list.get(1);
System.out.println(book2Ele.element("书名").getText());
//结果:JavaScript网页开发

}
}
</span></strong>


2.新建Dom4jDemo1.java:

public class Dom4jDemo1 {
public static void main(String[] args) throws Exception {
// //1.获取解析器
// SAXReader reader = new SAXReader();
// //2.解析xml获取代表整个文档的dom对象
// Document dom = reader.read("book.xml");
// //3.获取根节点:书架
// Element root = dom.getRootElement();
// //4.获取书名进行打印
// String bookName = root.element("书").element("书名").getText();
// System.out.println(bookName);

Demo4jDemo2 dom=new Demo4jDemo2();
dom.attr();
}
}

根目录下:新建book.xml:
<?xml version="1.0" encoding="UTF-8"?>

<书架>
<书>
<书名>Java就业培训教程</书名>
<作者>张孝祥</作者>
<售价>39.00元</售价>
<特价>4.0元</特价>
<特价>40.0元</特价>
</书>
<书>
<书名>JavaScript网页开发</书名>
<作者>张孝祥</作者>
<售价>28.00元</售价>
</书>
</书架>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  domj4解析xml