package com.yihu.hos.common;

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

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

/**
 * 封装 dom4j，简化操作 XML
 *
 * @author 张进军
 * @date 2017/6/19 14:02
 */
public class XmlUtil {

    private static Logger logger = Logger.getLogger(XmlUtil.class);

    /**
     * 将指定 XML 文件转换为 Document 对象
     *
     * @param xmlPath XML 路径
     * @return Document 对象
     */
    public static Document xml2doc(String xmlPath) {
        Document doc = null;
        try {
            SAXReader saxReader = new SAXReader();
            doc = saxReader.read(new File(xmlPath));
        } catch (DocumentException e) {
            logger.error("XML 转换成 Document 失败：" + e);
        }
        return doc;
    }

    /**
     * 将指定的 Document 对象转换成 XML 文件，并生成在指定路径下
     *
     * @param doc     被转换的 Document 对象
     * @param xmlPath 存放转换成的 XML 文件的路径
     * @return int 0: 生成失败，1：生成成功
     */
    public static int doc2xmlFormat(Document doc, String xmlPath) {
        int result = 0;
        try {
            OutputFormat outputFormat = OutputFormat.createCompactFormat();
            outputFormat.setEncoding("UTF-8");
            XMLWriter xmlWriter = new XMLWriter(new FileWriter(new File(xmlPath)), outputFormat);
            xmlWriter.write(doc);
            xmlWriter.close();
            result = 1;
        } catch (IOException e) {
            logger.error("Document 转换成 XML 失败：" + e);
        }
        return result;
    }

}
