Dom4j 解析

导入jar包:

需要使用xpath的时候,还需要 jaxen 包


package cn.ouc.xml.dom4j;

import java.util.ArrayList;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import cn.ouc.xml.Books;

public class Dom4jTest {
	
	public static void main(String[] args) throws Exception {
		//需要List 存放所有的book对象
		List allBook = new ArrayList();
		
		//获得解析流
		SAXReader reader = new SAXReader();
		//xml文件的解析
		Document document = reader.read("books.xml");
		//获得根元素
		Element rootElement = document.getRootElement();
		//获得所有的书籍
		List list = rootElement.elements();
		//遍历所有的书籍 -- list
		for(int e = 0 ; e < list.size() ; e ++){
			//创建book对象
			Books book = new Books();
			//获得每一本book元素
			Element bookElement = (Element)list.get(e);
			//获得书籍的id属性值
			String id = bookElement.attributeValue("id");
			//System.out.println(id);
			book.setId(id);
			
			//获得title和price
			List childList = bookElement.elements();
			//遍历子元素
			for(int c = 0 ; c < childList.size() ; c ++){
				//获得每一个子元素
				Element child = (Element) childList.get(c);
//				System.out.println(child);
				//获得子元素文本内容
				String content = child.getText();
				//判断是否是title
				if("title".equals(child.getName())){
					book.setTitle(content);
				}
				//判断是否是price
				if("price".equals(child.getName())){
					book.setPrice(content);
				}
			}
			//将已经封装了内容的book对象,添加到list中
			allBook.add(book);
		}
		//程序解析前,输出内容
		System.out.println(allBook);
	}
}

使用dom4j 进行CRUD

package cn.ouc.xml.dom4j;

import java.io.FileOutputStream;

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

public class CRUDTest {
	
	public static void main(String[] args) throws Exception {
		//获得document
		//获得解析流
		SAXReader reader = new SAXReader();
		//解析xml
		Document document  = reader.read("books.xml");
		
		//获得根元素
		Element rootElement = document.getRootElement();
		//添加
		//创建book元素
		Element newBook = DocumentHelper.createElement("book");
		
		//创建book元素的id属性
		Attribute  idAttr = DocumentHelper.createAttribute(newBook, "id", "b004");
		//添加到book元素中
		newBook.add(idAttr);
		
		//创建title元素
		Element titleElement = DocumentHelper.createElement("title");
		//设置值
		titleElement.setText("凤姐玉照");
		
		//添加到newbook
		newBook.add(titleElement);
		//将新book元素添加到root元素
		rootElement.add(newBook);
		//将document保存
		
		//持久化流
		//创建输出文件的位置
		FileOutputStream out = new FileOutputStream("books.dom4j.xml");
		XMLWriter writer = new XMLWriter(out);
		
		//添加内容对象
		writer.write(document);
		//关闭流
		writer.close();
	}
	
	public static void delete(String[] args) throws Exception {
		//获得document
		//获得解析流
		SAXReader reader = new SAXReader();
		//解析xml
		Document document  = reader.read("books.xml");
		//删除 b002
		Node bookNode = document.selectSingleNode("//book[@id='b002']");
		//获得父节点
		Node parent = bookNode.getParent();
		Element parentElement = (Element) parent;
		
		//删除操作
		parentElement.remove(bookNode);
		//将document保存
		//持久化流
		
		//创建输出文件的位置
		FileOutputStream out = new FileOutputStream("books.dom4j.xml");
		XMLWriter writer = new XMLWriter(out);
		//添加内容对象
		writer.write(document);
		//关闭流
		writer.close();
	}
	
	public static void update(String[] args) throws Exception {
		//获得document
		//获得解析流
		SAXReader reader = new SAXReader();
		//解析xml
		Document document  = reader.read("books.xml");
		//修改 b002 price 100
		Node bookNode = document.selectSingleNode("//book[@id='b002']");
		//强转转换
		Element bookElement = (Element) bookNode;
		//通过指定的名称获得相应的元素
		Element priceElement = bookElement.element("price");
		//修改值
//		priceElement.getText();
		priceElement.setText("100");
		//将document保存
		//持久化流
		
		//创建输出文件的位置
		FileOutputStream out = new FileOutputStream("books.dom4j.xml");
		XMLWriter writer = new XMLWriter(out);
		//添加内容对象
		writer.write(document);
		//关闭流
		writer.close();
	}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值