java dom4j 读写XML

<?xml version="1.0" encoding="UTF-8"?>

<Configuration> 
  <Config id="sysId">666</Config>  
  <Config id="sysName">en</Config> 
</Configuration>

 

import com.google.common.base.MoreObjects;
import org.dom4j.*;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;


import java.io.*;
import java.util.List;

/**
 * Created by wfcfan on 2016/11/29.
 */
public class UserConfig implements Serializable {

    static private String CONFIG_XML_PATH = "D:\\data\\config.xml";


    static private synchronized Document getConfigDocument() {
        SAXReader reader = new SAXReader();
        Document document = null;
        try {
            if (CONFIG_XML_PATH.startsWith("/")) {
                document = reader.read(new File(CONFIG_XML_PATH));
            } else {
                document = reader.read(CONFIG_XML_PATH);
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        return document;
    }

    static public synchronized UserConfig getUserConfig() throws DocumentException {

        Element root = getConfigDocument().getRootElement();

        List<Element> eles = root.elements();
        UserConfig config = new UserConfig();
        for (Element ele : eles) {
            String idAttr = ele.attribute("id").getValue();
            if (idAttr.equals("sysId")) {
                config.setSysId(Integer.parseInt(ele.getTextTrim()));
            } else if (idAttr.equals("sysName")) {
                config.setSysName(ele.getTextTrim());
            }
        }

        return config;
    }

    static public synchronized void setUserConfig(UserConfig config) {
        Document doc = getConfigDocument();
        Element root = doc.getRootElement();

        List<Element> eles = root.elements();
        for (Element ele : eles) {
            String idAttr = ele.attribute("id").getValue();
            if (idAttr.equals("sysId")) {
                ele.setText(String.valueOf(config.getSysId()));
            } else if (idAttr.equals("sysName")) {
                ele.setText(config.getSysName());
            }
        }

        OutputFormat format = OutputFormat.createPrettyPrint();
        XMLWriter writer = null;

        try {
            writer = new XMLWriter(new FileOutputStream(CONFIG_XML_PATH), format);
            writer.write(doc);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }


    public UserConfig() {

    }

    public UserConfig(int id, String sysName) {
        this.sysId = id;
        this.sysName = sysName;
    }

    private int sysId;
    private String sysName;


    public int getSysId() {
        return sysId;
    }

    public void setSysId(int sysId) {
        this.sysId = sysId;
    }

    public String getSysName() {
        return sysName;
    }

    public void setSysName(String sysName) {
        this.sysName = sysName;
    }


    @Override
    public String toString() {
        return MoreObjects.toStringHelper(this)
                .add("sysId", sysId)
                .add("sysName", sysName)
                .toString();
    }
}

 

posted on 2016-11-29 14:29  RedFox(低调)  阅读(273)  评论(1编辑  收藏  举报

导航