一、前言
话说在之前学习过xml,但是当时只是在理解xml可以存储数据,是可拓展的标记语言,所有的标记都可以由用户自己设置,非常的方便。最近的项目中用到了把xml中的数据取出来,这个也是非常实用的。所以小编总结一下。
二、C#获取配置文件中的数据库链接
小编以前学习C#的时候,经常用到的就是把数据库链接字符串,放到配置文件中,配置文件就是一个xml文件,整个过程还是很好的,通过在后台对数据库语句进行获取,系统变的十分的灵活。
xml:
<?xml version="1.0"?>@H_403_19@
<!-- 有关如何配置 ASP.NET 应用程序的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=169433 -->@H_403_19@
<configuration@H_403_19@>@H_403_19@
<system.web@H_403_19@>@H_403_19@
<compilation@H_403_19@ debug@H_403_19@="true"@H_403_19@ targetFramework@H_403_19@="4.0"@H_403_19@/>@H_403_19@
<httpRuntime@H_403_19@/>@H_403_19@
</system.web@H_403_19@>@H_403_19@
<appSettings@H_403_19@>@H_403_19@
<!--连接数据库的注解-王雷-2017年1月4日-->@H_403_19@
<add@H_403_19@ key@H_403_19@="ConnectionString"@H_403_19@ value@H_403_19@="server=192.168.26.207;database=Test;uid=sa;pwd=*******;"@H_403_19@/>@H_403_19@
</appSettings@H_403_19@>@H_403_19@
</configuration@H_403_19@>@H_403_19@
string@H_403_19@ connStr = ConfigurationManager.AppSettings["ConnectionString"@H_403_19@]; //这里的ConnectionString要和配置文件中的一样@H_403_19@
在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@H_403_19@>@H_403_19@
<driver-name@H_403_19@>@H_403_19@oracle.jdbc.driver.OracleDriver</driver-name@H_403_19@>@H_403_19@
<url@H_403_19@>@H_403_19@jdbc:oracle:thin:@localhost:1521:bjpowern</url@H_403_19@>@H_403_19@
<user-name@H_403_19@>@H_403_19@</user-name@H_403_19@>@H_403_19@
<password@H_403_19@>@H_403_19@drp1</password@H_403_19@>@H_403_19@
</db-info@H_403_19@>@H_403_19@
3.2 引入jar包
需要我们引入 dom4j和jaxen两个jar包:
3.3 建立读取解析xml文件的类
package@H_403_19@ com.bjpowernode.drp.util;
import@H_403_19@ java.io.InputStream;
import@H_403_19@ org.dom4j.Document;
import@H_403_19@ org.dom4j.DocumentException;
import@H_403_19@ org.dom4j.Element;
import@H_403_19@ org.dom4j.io.SAXReader;
/* * 采用单例模式解析xml文件 * Ares * 2017年1月2日15:27:58 * */@H_403_19@
public@H_403_19@ class@H_403_19@ XmlConfigReader@H_403_19@ {@H_403_19@
//饿汉式单例模式:不管用不用上来直接new(预先加载)@H_403_19@
/* private static XmlConfigReader instance = new XmlConfigReader(); private XmlConfigReader(){ } public static XmlConfigReader getInstance(){ return instance; }*/@H_403_19@
//懒汉式 (延迟加载lazy)@H_403_19@
private@H_403_19@ static@H_403_19@ XmlConfigReader instance = null@H_403_19@;
private@H_403_19@ JdbcConfig jdbcConfig = new@H_403_19@ JdbcConfig();
public@H_403_19@ void@H_403_19@ setJdbcConfig@H_403_19@(JdbcConfig jdbcConfig) {
this@H_403_19@.jdbcConfig = jdbcConfig;
}
private@H_403_19@ XmlConfigReader@H_403_19@(){
SAXReader reader = new@H_403_19@ SAXReader();
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("config.xml"@H_403_19@);
try@H_403_19@ {
Document doc = reader.read(in);
//从xml文件中读取相对应字段位置的值@H_403_19@
Element driverNameElt = (Element)doc.selectObject("/config/db-info/driver-name"@H_403_19@);
Element urlElt = (Element)doc.selectObject("/config/db-info/url"@H_403_19@);
Element userNameElt = (Element)doc.selectObject("/config/db-info/user-name"@H_403_19@);
Element passwordElt = (Element)doc.selectObject("/config/db-info/password"@H_403_19@);
//将读出来的值付给变量@H_403_19@
String driverName = driverNameElt.getStringValue();
String url = urlElt.getStringValue();
String userName = userNameElt.getStringValue();
String password = passwordElt.getStringValue();
//向jdbc连接实体中赋值@H_403_19@
jdbcConfig.setDriverName(driverName);
jdbcConfig.setUrl(url);
jdbcConfig.setUserName(userName);
jdbcConfig.setPassword(password);
} catch@H_403_19@ (DocumentException e) {
e.printStackTrace();
}
}
//需要加入同步关键字synchronized@H_403_19@
public@H_403_19@ static@H_403_19@ synchronized@H_403_19@ XmlConfigReader getInstance@H_403_19@(){
if@H_403_19@(instance == null@H_403_19@){
instance = new@H_403_19@ XmlConfigReader();
}
return@H_403_19@ instance;
}
/** * 返回jdbc相关配置 * @return@H_403_19@ */@H_403_19@
public@H_403_19@ JdbcConfig getJdbcConfig@H_403_19@() {
return@H_403_19@ jdbcConfig;
}
public@H_403_19@ static@H_403_19@ void@H_403_19@ main@H_403_19@(String[] args) {
JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();
System.out.println(jdbcConfig);
}
}
通过调用getJdbcConfig这个方法就可以获得我们需要的对应的字段的数据。是不是很方便,其实这只是一个方面的使用,还可以把数据库中的数据编写成为xml文件进行存储。这个小编以后向大家介绍。
四、小结
遇到新的知识首先要联系一下旧的知识,这个就可以更好地的让我们理解这个。所以不是为了学习而学习,是为了思考而学习。