DOM4J的用法

package Sav;

import java.io.File;
import java.io.FileOutputStream;
import java.io.UnsupportedEncodingException;
import java.util.List;

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

public class DOM4JParser {

// 别导错包
	private static Document document;

/**
 * 加载DOM树
 * @param xmlPath
 * @throws Exception 
 * @throwsException 
 */
public static void loadDocument(String xmlPath) throws Exception  {
	SAXReader saxReader = new SAXReader();
	document = saxReader.read(new File(xmlPath));
	
}
public static void main(String[] args) throws Exception {
	// 加载DOM树
	loadDocument("src/books.xml");
	// 增加XML内容
	 addXMLContent();
	// 修改XML内容
	 updateXMLContent();
	// 删除XML内容
	deleteXMLContent();
	// 将内存中的DOM树转换为XML文档内容
	formatDOM2XML("src/books.xml");
	// 查询XML内容
	getXMLContent();
}

/**
 * 修改XML内容
 * 需求:修改元素节点的内容 
 * 	name:时间简史
 * 	author:霍金
 * 	desc:霍金著作!探究宇宙奥秘!
 */
private static void updateXMLContent() {
	// 获取根元素
	Element booksEle = document.getRootElement();
	// 获取并遍历所有的子元素列表
	List bookEleList = booksEle.elements("book");
	for (Element bookEle : bookEleList) {
		// 查找bk003元素
		if(bookEle.attributeValue("id").equals("bk003")) {
			// 更改name  author  desc内容
			Element nameEle = bookEle.element("name");
			nameEle.setText("时间简史");
			Element authorEle = bookEle.element("author");
			authorEle.setText("霍金");
			Element descEle = bookEle.element("desc");
			descEle.setText("霍金著作!探究宇宙奥秘!");
		}
	}
	
}
/**
 * 添加XML内容
 */
private static void addXMLContent() {
	// 获取根元素
	Element booksEle = document.getRootElement();
	// 根元素添加子元素节点
	Element bookEle = booksEle.addElement("book");
	bookEle.addAttribute("id", "bk003");
	// 分别添加子元素节点  并赋值内容
	Element nameEle = bookEle.addElement("name");
	nameEle.setText("大话设计模式");
	Element authorEle = bookEle.addElement("author");
	authorEle.setText("程杰");
	Element descEle = bookEle.addElement("desc");
	descEle.setText("设计模式一点都不可怕!杰佬带你飞!");
	
}
/**
 * 查询XML内容
 */
private static void getXMLContent() {
	// document.getElementsByTagName("books").item(0);
			// 获取根元素
			Element booksEle = document.getRootElement();
			// 获取并遍历所有的子元素节点
			List bookEleList = booksEle.elements();
			for (Element bookEle : bookEleList) {
				// 获取id属性
				String id = bookEle.attributeValue("id");
				// 获取name元素内容(也可以先获取元素节点对象 然后再获取元素节点内容)
				// 可以自动去除内容空格
				String name = bookEle.elementTextTrim("name");
				// 获取author元素内容
				String author = bookEle.elementTextTrim("author");
				// 获取desc元素内容
				String desc = bookEle.elementTextTrim("desc");
				System.out.println(id+" - "+name+" - "+author+" - "+desc);
			}
	
}
/**
 * DOM树转换为XML文档
 * @param destXMLPath
 * @throws Exception 
 * @throws UnsupportedEncodingException 
 * @throws Exception 
 */
private static void formatDOM2XML(String destXMLPath) throws Exception {
	XMLWriter xmlWriter = null;
	try {
		// 创建输出转换器对象 
		// compact紧凑的  format格式
		// OutputFormat outputFormat = OutputFormat.createCompactFormat();
		// pretty漂亮的
		OutputFormat outputFormat = OutputFormat.createPrettyPrint();
		// 指定字符编码
		outputFormat.setEncoding("UTF-8");
		// 指定数据源和输出目的地
		xmlWriter = new XMLWriter(new FileOutputStream(destXMLPath), outputFormat);
		// 输出内容
		xmlWriter.write(document);
	} finally{
		// 关流
		xmlWriter.close();
	}
}

/**
 * 删除XML内容
 * 需求:删除最后一个元素节点内容
 */
private static void deleteXMLContent() {
	// 获取根元素
			Element booksEle = document.getRootElement();
			// 获取所有的book元素
			List bookEleList = booksEle.elements("book");
			// 获取最后一个
			Element removeBookEle = bookEleList.get(bookEleList.size() - 1);
			// 删除元素
			booksEle.remove(removeBookEle);
}

}

人性的弱点 戴尔.卡内基 深入去探究人性弱点,天才在左疯子在右。 时间简史 霍金 霍金著作!探究宇宙奥秘!

//下载Dom4J源文件

你可能感兴趣的:(DOM4J的用法)