加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【XML】使用dom4j来解析XML文件数据

发布时间:2020-12-16 08:24:08 所属栏目:百科 来源:网络整理
导读:一、前言 话说在之前学习过xml,但是当时只是在理解xml可以存储数据,是可拓展的标记语言,所有的标记都可以由用户自己设置,非常的方便。最近的项目中用到了把xml中的数据取出来,这个也是非常实用的。所以小编总结一下。 二、C#获取配置文件中的数据库链接

一、前言

话说在之前学习过xml,但是当时只是在理解xml可以存储数据,是可拓展的标记语言,所有的标记都可以由用户自己设置,非常的方便。最近的项目中用到了把xml中的数据取出来,这个也是非常实用的。所以小编总结一下。

二、C#获取配置文件中的数据库链接

小编以前学习C#的时候,经常用到的就是把数据库链接字符串,放到配置文件中,配置文件就是一个xml文件,整个过程还是很好的,通过在后台对数据库语句进行获取,系统变的十分的灵活。

xml:

<?xml version="1.0"?>
<!-- 有关如何配置 ASP.NET 应用程序的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=169433 -->
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0"/>
    <httpRuntime/>
  </system.web>
  <appSettings>
    <!--连接数据库的注解-王雷-2017年1月4日-->
    <add key="ConnectionString" value="server=192.168.26.207;database=Test;uid=sa;pwd=*******;"/>
  </appSettings>
</configuration>

D层获取配置文件链接语句代码:

string connStr = ConfigurationManager.AppSettings["ConnectionString"];  //这里的ConnectionString要和配置文件中的一样

在C#中小编是这么做的,当然这只是其中的一部分,还有很多比如Spring的使用,也要用到配置文件,所以非常的灵活。

二、什么是dom4j?

dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j无论在哪个方面都是非常出色的。如今可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这已经是必须使用的jar包, Hibernate也用它来读写配置文件。

三、如何解析xml

下面给出一些例子,简单说一下如何使用。

3.1 解析xml文件

xml文件示例:sys-conf.xml

<db-info>
        <driver-name>oracle.jdbc.driver.OracleDriver</driver-name>
        <url>jdbc:oracle:thin:@localhost:1521:bjpowern</url>
        <user-name></user-name>
        <password>drp1</password>
</db-info>

3.2 引入jar包

需要我们引入 dom4j和jaxen两个jar包:

3.3 建立读取解析xml文件的类

package com.bjpowernode.drp.util;
import java.io.InputStream;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/* * 采用单例模式解析xml文件 * Ares * 2017年1月2日15:27:58 * */
public class XmlConfigReader {

    //饿汉式单例模式:不管用不用上来直接new(预先加载)
/* private static XmlConfigReader instance = new XmlConfigReader(); private XmlConfigReader(){ } public static XmlConfigReader getInstance(){ return instance; }*/

    //懒汉式 (延迟加载lazy)
    private static XmlConfigReader instance = null;

    private JdbcConfig jdbcConfig = new JdbcConfig();

    public void setJdbcConfig(JdbcConfig jdbcConfig) {
        this.jdbcConfig = jdbcConfig;
    }
    private XmlConfigReader(){
        SAXReader reader = new SAXReader();
        InputStream in =  Thread.currentThread().getContextClassLoader().getResourceAsStream("config.xml");

        try {
            Document doc = reader.read(in);

            //从xml文件中读取相对应字段位置的值
            Element driverNameElt = (Element)doc.selectObject("/config/db-info/driver-name");  
            Element urlElt = (Element)doc.selectObject("/config/db-info/url");
            Element userNameElt = (Element)doc.selectObject("/config/db-info/user-name");
            Element passwordElt = (Element)doc.selectObject("/config/db-info/password");

            //将读出来的值付给变量
            String driverName =  driverNameElt.getStringValue();
            String url =  urlElt.getStringValue();
            String userName =  userNameElt.getStringValue();
            String password =  passwordElt.getStringValue();

            //向jdbc连接实体中赋值
            jdbcConfig.setDriverName(driverName);
            jdbcConfig.setUrl(url);
            jdbcConfig.setUserName(userName);
            jdbcConfig.setPassword(password);

        } catch (DocumentException e) {
            e.printStackTrace();
        }

    }

    //需要加入同步关键字synchronized
    public static synchronized XmlConfigReader getInstance(){
        if(instance == null){
            instance = new XmlConfigReader();
        }
        return instance;
    }

    /** * 返回jdbc相关配置 * @return */
    public JdbcConfig getJdbcConfig() {
        return jdbcConfig;
    }


    public static void main(String[] args) {
        JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();
        System.out.println(jdbcConfig);

    }
}

通过调用getJdbcConfig这个方法就可以获得我们需要的对应的字段的数据。是不是很方便,其实这只是一个方面的使用,还可以把数据库中的数据编写成为xml文件进行存储。这个小编以后向大家介绍。

四、小结

遇到新的知识首先要联系一下旧的知识,这个就可以更好地的让我们理解这个。所以不是为了学习而学习,是为了思考而学习。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读