dom4j讀取.xml參數配置文件

注:一般項目中會配置.properties文件來存儲參數、路徑等全局信息。而此處使用xml方式處理

1、寫xml文件:configuration.xml

<?xml version = "1.0" encoding="UTF-8"?>
<system>
    <!--
        說明:方法見文件處理工具類
     -->
    <config name="enumValue" explain="數據字典父類項">
        <item name="school_type" value="10002"  explain="學校類型"/>
        <item name="school_arrange" value="10015"  explain="學校層級"/>
        <item name="login" value="10020"  explain="登陸類數據"/>
        <item name="intervalTime" value="10021"  explain="錯誤登陸間隔(單位:分鐘)"/>
        <item name="forbidTime" value="10022"  explain="錯誤登陸禁止時間(單位:分鐘)"/>
        <item name="missNum" value="10023"  explain="錯誤登陸限制次數"/>
    </config>
</system>

2、寫文件讀取類:項目啓動時調用方法ReaderXml()緩存configuration.xml數據至靜態變量map中

package com.credit.utils;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class FileHelpper {
    public static final Map<String,String > map = new HashMap<String, String>();
    public static void ReaderXml(){
        // 解析configuration.xml文件
        // 創建SAXReader的對象reader
        SAXReader reader = new SAXReader();
        ResourceLoader resourceLoader = new DefaultResourceLoader();
        String name = "";
        String key = "";
        try {
            // 通過reader對象的read方法加載configuration.xml文件,獲取docuemnt對象。
            File file = new File("configuration.xml"); // 這裏表示從jar同級目錄加載
            Resource resource = new FileSystemResource(file);

            if (!resource.exists()) { //jar同級目錄加載目錄下還是找不到,那就直接用classpath下的
                resource = resourceLoader.getResource("classpath:configuration.xml");
            }
            Document document = reader.read(resource.getInputStream());
            // 通過document對象獲取根節點bookstore
            Element bookStore = document.getRootElement();
            // 通過element對象的elementIterator方法獲取迭代器
            Iterator it = bookStore.elementIterator();
            // 遍歷迭代器
            while (it.hasNext()) {
                Element str = (Element) it.next();
                // 獲取屬性名以及屬性值
                List<Attribute> strAttrs = str.attributes();

                for (Attribute attr : strAttrs) {
                    if(attr.getName().equals("name")){
                        name = attr.getValue();
                    }
                }

                //解析子節點的信息
                Iterator itt = str.elementIterator();
                while (itt.hasNext()) {
                    Element strChild = (Element) itt.next();
                    List<Attribute> bookChildList = strChild.attributes();
                    for (Attribute attr : bookChildList) {
                        if(attr.getName().equals("name")){
                            key = name +"." + attr.getValue();
                        }
                        if(attr.getName().equals("value")){
                            map.put(key,attr.getValue());
                        }
                    }
                }
            }
            System.out.println("==================================================");
            System.out.println("讀取配置文件內容如下:"+map);
            System.out.println("==================================================");
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 重新加載xml配置文件
     * @return
     */
    public static Map<String,String> RestReaderXml(){
        map.clear();
        ReaderXml();
        return map;
    }
}

3、調用方法:

FileHelpper.map.get("enumValue.missNum")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章