文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么用dom4j读取xml配置文件

2023-06-03 01:04

关注

本篇内容主要讲解“怎么用dom4j读取xml配置文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用dom4j读取xml配置文件”吧!

实现步骤以及源码:
1、写xml文件读取类读取xml文档内容返回Document对象,此处作为公共xml操作类,用于读取和操作xml文档内容。

           点击(此处)折叠或打开

  1. package util;

  2. import java.io.File;

  3. import java.io.FileWriter;

  4. import java.io.IOException;

  5. import java.io.InputStream;

  6. import java.io.StringReader;

  7. import java.net.URL;

  8. import org.apache.log4j.Logger;

  9. import org.dom4j.Document;

  10. import org.dom4j.DocumentException;

  11. import org.dom4j.io.OutputFormat;

  12. import org.dom4j.io.SAXReader;

  13. import org.dom4j.io.XMLWriter;

  14. public class XMLHelper {

  15.                    private static Logger logger=Logger.getLogger(XMLHelper.class);

  16.                    

  17.                    

  18.                    public static Document getDocument(File xmlFile){

  19.                        try {

  20.                            SAXReader saxReader=new SAXReader();

  21.                            return saxReader.read(xmlFile);

  22.                        } catch (DocumentException e) {

  23.                            logger.error("读取xml文件出错,返回nulll",e);

  24.                            return null;

  25.                        }

  26.                    }

  27.                    

  28.                    public static Document getDocument(String xmlString){

  29.                        try {

  30.                            if(xmlString==null||xmlString.equals(""))

  31.                                return null;

  32.                            SAXReader saxReader=new SAXReader();

  33.                            File file=new File(xmlString);

  34.                            return saxReader.read(file);

  35.                        } catch (DocumentException e) {

  36.                            logger.error("读取xml文件失败!",e);

  37.                            return null;

  38.                        }

  39.                    }

  40.                    

  41.                    public static Document getDocumentFromString(String xmlString){

  42.                        try {

  43.                            if(xmlString==null||xmlString.equals(""))

  44.                                return null;

  45.                            SAXReader saxReader=new SAXReader();

  46.                            return saxReader.read(new StringReader(xmlString));

  47.                        } catch (DocumentException e) {

  48.                            // TODO Auto-generated catch block

  49.                            e.printStackTrace();

  50.                        }

  51.                        return null;

  52.                    }

  53.                    

  54.                    

  55.                    public static boolean saveToFile(Document document,String filePath,OutputFormat outputFormat){

  56.                        XMLWriter writer;

  57.                        File file=new File(filePath);

  58.                        if(!file.exists()){

  59.                            try {

  60.                                file.createNewFile();

  61.                                if(!file.isDirectory())

  62.                                    return false;

  63.                            } catch (IOException e) {

  64.                                logger.error("创建文件'"+filePath+"'失败",e);

  65.                                return false;

  66.                            }

  67.                        }

  68.                        try {

  69.                            writer=new XMLWriter(new FileWriter(new File(filePath)));

  70.                            writer.write(document);

  71.                            writer.close();

  72.                            return true;

  73.                        } catch (IOException e) {

  74.                            logger.error("写文件"+filePath+"'出错",e);

  75.                        }

  76.                        return false;

  77.                        

  78.                    }

  79.                    

  80.                    public static boolean writeToXml(String filePath,Document doc){

  81.                        OutputFormat format=new OutputFormat();

  82.                        format.setEncoding("GBK");

  83.                        if(saveToFile(doc, filePath, format))

  84.                            return true;

  85.                        return false;

  86.                    }

  87.                    

  88.                    

  89.                    public static Document getDocument(Class cls,String XmlFile){

  90.                        Document document = null;

  91.                        ClassLoader loader = cls.getClassLoader();

  92.                        // 先从当前类所处路径的根目录中寻找属性文件

  93.                        File f;

  94.                        URL url = loader.getResource(XmlFile);

  95.                        if ( url != null )

  96.                        {

  97.                            f = new File(url.getPath());

  98.                         if ( f != null && f.exists() && f.isFile() )

  99.                         {

  100.                                document=XMLHelper.getDocument(f);

  101.                         }else{

  102.                                InputStream ins=null;

  103.                                try {

  104.                                    if(loader!=null){

  105.                                        ins=loader.getResourceAsStream(XmlFile);

  106.                                    }

  107.                                    if(ins!=null){

  108.                                        SAXReader saxReader=new SAXReader();

  109.                                            document=saxReader.read(ins);

  110.                                    }

  111.                                } catch (DocumentException e) {

  112.                                    logger.error("读取xml文件'"+XmlFile+"'失败",e);

  113.                                }finally{

  114.                                    try {

  115.                                        if(ins!=null){

  116.                                            ins.close();

  117.                                            ins=null;

  118.                                        }

  119.                                    } catch (IOException e) {

  120.                                        logger.error("",e);

  121.                                    }

  122.                                }

  123.                         }

  124.                        }

  125.                        return document;

  126.                        

  127.                    }

  128. }

写配置文件公共操作类,用于取配置文件中的配置信息
实现思路:对读取的xml的document对象进行解析,以键值对的形式存入map对象,取配置值时通过键值对(父级配置项目.子级配置项)的形式取出对应的配置信息

           点击(此处)折叠或打开

  1. package util;

  2. import java.util.HashMap;

  3. import java.util.Iterator;

  4. import java.util.List;

  5. import java.util.Map;

  6. import org.apache.log4j.Logger;

  7. import org.dom4j.Document;

  8. import org.dom4j.Element;

  9. public class Configuration {

  10.                    

  11.                    private static Logger logger=Logger.getLogger(Configuration.class);

  12.                    private static String CONFIG_FILE_NAME="conf/configuration.xml";

  13.                    

  14.                    private static Map itemMap=new HashMap();

  15.                    static{

  16.                        load_config();

  17.                    }

  18.                    private static void load_config(){

  19.                        try{

  20.                            Document document = XMLHelper.getDocument(Configuration.class, CONFIG_FILE_NAME);

  21.                            if(document!=null){

  22.                                Element element=document.getRootElement();

  23.                                List catList=element.elements("category");

  24.                                for (Iterator catIter=catList.iterator();catIter.hasNext();) {

  25.                                    Element catElement=(Element) catIter.next();

  26.                                    String catName=catElement.attributeValue("name");

  27.                                    if(catName==null||catName.equals(""))

  28.                                        continue;

  29.                                    List itemList=catElement.elements("item");

  30.                                    for (Iterator itemIter=itemList.iterator();itemIter.hasNext();) {

  31.                                        Element itemElement=(Element) itemIter.next();

  32.                                        String itemName=itemElement.attributeValue("name");

  33.                                        String value=itemElement.attributeValue("value");

  34.                                        if (itemName==null||itemName.equals(""))

  35.                                            continue;

  36.                                        itemMap.put(catName+"."+itemName, value);

  37.                                    }

  38.                                }

  39.                            }

  40.                        }catch(Exception ex){

  41.                            logger.error("读取配置文件错误",ex);

  42.                        }

  43.                    }

  44.                    

  45.                    public static String getString(String name){

  46.                        String value=(String) itemMap.get(name);

  47.                        return value==null?"":value;

  48.                    }

  49.                    

  50.                    public static String getString(String name,String defaultValue){

  51.                        String value=(String) itemMap.get(name);

  52.                        return value==null||value.equals("")?defaultValue:value;

  53.                    }

  54.                    

  55.                    public static int getInt(String name){

  56.                        String value=(String) itemMap.get(name);

  57.                        try {

  58.                            return Integer.parseInt(value);

  59.                        } catch (Exception e) {

  60.                            logger.error("配置文件key["+name+"]配置错误,return 0",e);

  61.                            return 0;

  62.                        }

  63.                    }

  64.                    

  65.                    public static int getInt(String name,int defaultValue){

  66.                        String value=(String) itemMap.get(name);

  67.                        try {

  68.                            return Integer.parseInt(value);

  69.                        } catch (Exception e) {

  70.                            logger.error("配置文件key["+name+"]配置错误,返回默认值"+defaultValue,e);

  71.                            return defaultValue;

  72.                        }

  73.                    }

  74.                    

  75.                    public static boolean getBoolean(String name){

  76.                        String value=(String) itemMap.get(name);

  77.                        return Boolean.valueOf(value).booleanValue();

  78.                    }

  79.                    

  80.                    public static Double getDouble(String name,Double defaultValue) {

  81.                        String value=(String) itemMap.get(name);

  82.                        try {

  83.                            return Double.parseDouble(value);

  84.                        } catch (Exception e) {

  85.                            logger.error("配置文件key["+name+"]配置错误,返回默认值"+defaultValue,e);

  86.                            return defaultValue;

  87.                        }

  88.                    }

  89.                    

  90.                    public static Map getItems(){

  91.                        return itemMap;

  92.                    }

  93. }

以下内容为xml文件的内容模板以及使用样例

           点击(此处)折叠或打开

  1. <?xml version="1.0" encoding="GBK"?>

  2. <system>

  3.                    <category name="test1" description="配置信息二">

  4.                        <item name="test1-1" value="1" description="" />

  5.                    </category>

  6.                    

  7.                    <category name="test2" description="配置信息二">

  8.                        <item name="test2-1" value="0" description="" />

  9.                        <item name="test2-2" value="12.4" description="" />

  10.                        <item name="test2-3" value="啊啊啊" description="" />

  11.                    </category>

  12. </system>

读取时使用Configuration.getString("test1.test1-1")获取 到配置值"1"
读取时使用Configuration.getString("test2.test1-3")获取 到配置值"啊啊啊"

到此,相信大家对“怎么用dom4j读取xml配置文件”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯