package db.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.OutputStream; 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.slf4j.Logger; import org.slf4j.LoggerFactory; public class HandleXML { /** * logger */ private static Logger logger = LoggerFactory.getLogger(HandleXML.class); /** *
Description: XML Document 写入文件
*Create Time:
* @param document XML Document * @param filePath 文件路径 * @throws Exception 异常 */ public static void writeToXML(Document document, String filePath) throws Exception { OutputStream os = null; try { File file = new File(filePath); if (!file.exists()) { file.createNewFile(); } OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); // 设置XML文件的编码格式 os = new FileOutputStream(filePath); XMLWriter xmlout = new XMLWriter(os, format); xmlout.write(document); xmlout.close(); } catch (Exception e) { logger.error("write to xml [" + filePath + "] error", e); throw new Exception(e); } finally { IOUtil.closeQuietly(os); } } /** *Description: Get XML Document
*Create Time: 2013-2-6
* @param fis 文件输入流 * @param rootName 根节点名称 * @return XML Document */ public static Document getDocument(FileInputStream fis, String rootName) { Document document = null; try { SAXReader saxReader = new SAXReader(); document = saxReader.read(fis); } catch (DocumentException e) { document = DocumentHelper.createDocument(); document.addElement(rootName); // root } return document; } /** *Description: 删除XML Document查找到的第一条记录
*Create Time: 2013-2-6
* @author weiminghua * @param xpathExpression 匹配正则 * @param document XML Document * @return 删除结果 */ public static boolean deleteFirstNode(String xpathExpression, Document document) { List> list = document.selectNodes(xpathExpression); if (list.size() > 0) { Element e = (Element) list.get(0); return e.getParent().remove(e); } return false; } }