一、前言
话说在之前学习过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>
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文件进行存储。这个小编以后向大家介绍。
四、小结
遇到新的知识首先要联系一下旧的知识,这个就可以更好地的让我们理解这个。所以不是为了学习而学习,是为了思考而学习。