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

一、前言

      话说在之前学习过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文件进行存储。这个小编以后向大家介绍。

四、小结

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

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你个佬六

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值