首页 > 代码库 > Dom4j 读取一个XML文件和将String写成XML文件

Dom4j 读取一个XML文件和将String写成XML文件

dom4j保存文件xml格式和读取XML文件内容,代码如下:


package com.qmjs.imut
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;

import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class Dom4jUtils {

	private static final Logger LOG = Logger.getLogger(Dom4jUtils.class);

	private Dom4jUtils() {
		super();
	}

	/**
	 * 使用Dom4j读取一个XML文件
	 * 
	 * @param xmlFileName
	 * @return
	 */
	public static Document loadXML(String xmlFileName) {
		InputStream is = null;

		try {
			LOG.info("使用Dom4j读取一个XML文件: " + xmlFileName);

			is = Dom4jUtils.class.getClassLoader().getResourceAsStream(
					xmlFileName);

			SAXReader xmlReader = new SAXReader();
			xmlReader.setMergeAdjacentText(true);
			xmlReader.setEncoding(null);
			xmlReader.setStripWhitespaceText(true);
			xmlReader.setValidation(false);
			xmlReader.setIgnoreComments(true);

			Document document = xmlReader.read(is);
			document.normalize();

			return document;
		} catch (Exception e) {
			LOG.error(e.getMessage(), e);
		} finally {
			if (is != null) {
				try {
					is.close();
				} catch (IOException e) {
					LOG.error(e.getMessage(), e);
				}
			}
		}

		return null;
	}

	/**
	 * 将一个string内容写成mxl格式文件
	 * 
	 * @param file
	 * @param content
	 * @return
	 */
	public static boolean writeXml(File file, String content) {
		XMLWriter writer = null;
		try {
			Document document = DocumentHelper.parseText(content);
			OutputFormat format = OutputFormat.createPrettyPrint();
			format.setEncoding("utf-8");
			writer = new XMLWriter(new FileWriter(file), format);
			writer.write(document);
			writer.flush();
			return true;
		} catch (Exception e) {
			LOG.error(e.getMessage(), e);
		} finally {
			if (writer != null) {
				try {
					writer.close();
				} catch (IOException e) {
					LOG.error(e.getMessage(), e);
				}
			}
		}
		return false;
	}
}