首页 > 代码库 > DOM4J解析xml(CURD)

DOM4J解析xml(CURD)

public class CURDTest {
	
	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();
	}
}



一、获得document
//获得解析流
SAXReader reader = new SAXReader();
//解析xml
Document document  = reader.read("books.xml");

二、保存
//创建输出文件的位置
FileOutputStream out = new FileOutputStream("books.dom4j.xml");

XMLWriter writer = new XMLWriter(out);
//添加内容对象
writer.write(document);
//关闭流
writer.close();

三、API
* 获得根元素
Element rootElement = document.getRootElement();
* 获得所有的子元素
List list = rootElement.elements();
* 获得指定的子元素
Element priceElement = bookElement.element("price");
* 获得指定属性的元素
Node bookNode = document.selectSingleNode("//book[@id=‘b002‘]");
* 设置文本
priceElement.setText("100");
* 获得节点的名称
child.getName()
* 获得指定名称的属性值
String id = bookElement.attributeValue("id");

DOM4J解析xml(CURD)