zoukankan      html  css  js  c++  java
  • 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();
        }
    }
  • 相关阅读:
    Python面试题目之Python函数默认参数陷阱
    Python面试题目之列表取值超出范围
    Python面试题目之打乱打乱有序列表
    Python面试题目之列表去重并维持原来顺序
    Python面试题目之字典排序
    前端学习笔记之JavaScript
    前端学习笔记之CSS后代选择器、子元素选择器、相邻兄弟选择器区别与详解
    前端学习笔记之CSS知识汇总
    SQL学习笔记八之ORM框架SQLAlchemy
    高效循环算法
  • 原文地址:https://www.cnblogs.com/wfcfan/p/6113502.html
Copyright © 2011-2022 走看看