用dom4j对xml文档解析

package com.huowolf.dom4j;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
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文档的第二本书:<name>安徒生童话</name>
		@Test
		public void read() throws DocumentException {
			SAXReader reader = new SAXReader();
			 Document document = reader.read(new File("books.xml"));
			  
			 Element root = document.getRootElement();
			 Element book = (Element)root.elements("book").get(1);
			 //获取Text
			 String text= book.elementText("name");
			 System.out.println(text);
			 //获取value
			 String value = book.attributeValue("id");
			 System.out.println(value);
			 
		}
		
		//在第一本书上添加一个国籍:<language>English</language>
		@Test
		public void add() throws DocumentException, IOException {
			 SAXReader reader = new SAXReader();
			 Document document = reader.read(new File("books.xml"));
			 
			 Element book = document.getRootElement().element("book");
			 book.addElement("language").setText("English");
			 
			 //输出文件
		      XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("books.xml"),"UTF-8"));
		      /*
		       * 格式化输出器可以指定码表
		       * OutputFormat format = OutputFormat.createPrettyPrint();
		       * format.setEncoding("gb2312");
		       * writer = new XMLWriter( System.out, format );
		       */
		     
		      writer.write( document );
	          writer.close();	          
		}
		
		
		//在第一本书的指定位置上添加一个新的售价:<price>95</price>
		@Test
		public void add2 ()throws Exception{
			 SAXReader reader = new SAXReader();
			 Document document = reader.read(new File("books.xml"));
			 
			 Element book = document.getRootElement().element("book");
			 
			List<Element> list = book.elements();
			 
			 Element price = DocumentHelper.createElement("price");
			 price.setText("95");
			 list.add(3, price);
			 
			 OutputFormat format = OutputFormat.createPrettyPrint();
			 format.setEncoding("UTF-8");
			 
			 XMLWriter writer = new XMLWriter(new FileOutputStream("books.xml"), format);
			 writer.write(document);
			 writer.close();	 
		}
		
		//删除指定节点:<price>89</price>  
		@Test
		public void delete() throws DocumentException, IOException {
			SAXReader reader = new SAXReader();
			 Document document = reader.read(new File("books.xml"));
			 
			 Element price = (Element) document.getRootElement().element("book").elements("price").get(1);
			 price.getParent().remove(price);
			 
			 OutputFormat format = OutputFormat.createPrettyPrint();
			 format.setEncoding("UTF-8");
			 
			 XMLWriter writer = new XMLWriter(new FileOutputStream("books.xml"), format);
			 writer.write(document);
			 writer.close();	 
		}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值