xml相关概念及java读取配置文件

XML:eXtensible MarkupLanguage。可标记性扩展语言。

XSL:(eXtensibleStylesheet Language)-可扩展样式表语言,用来修饰XML。

DTD(Document Type Definition):标记性语言规则,可以约束标签、属性的名字,还有其中的值。


这三种东西好像html和css还有javascript其中的关系,XML文件可以作为配置文件使用。XML中的标签可以随便写,只要配对就可以。下面写一个用java读取XML文件中的值。

首先看XML文件中的代码:

<?xml version="1.0" encoding="UTF-8"?> <config> <db-info> <driver-name>oracle.jdbc.driver.OracleDriver</driver-name> <url>jdbc:oracle:thin:@localhost:1521:bjpowernode</url> <user-name>drp1</user-name> <password>drp1</password> </db-info> </config>
这里的config是跟标记,中间的driver-name都是自己写的,XML中并没有规定。


看用Java怎么读取:

import java.io.InputStream; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; /* * 解析sys-config.xml文件 * 引入jaxen-1.1-beta-6.jar可以使用Xpath */ public class XmlConfigReader { /* //恶汉式 private static XmlConfigReader instance = new XmlConfigReader(); private XmlConfigReader(){ } public static XmlConfigReader getInstance(){ return instance; } */ //懒汉式 private static XmlConfigReader instance = null; //保存jdbc相关配置信息 JdbcConfig jdbcConfig = new JdbcConfig(); private XmlConfigReader() { SAXReader reader = new SAXReader(); //启动一个线程来调用 //拿到当前线程 //在拿到当前的ClassLoader(装载器),把xml文件作为一个资源装在 //取得资源名称,如果资源有目录就加上路径名称 //返回一个InputStream InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml"); try { //doc对应xml文件 Document doc = reader.read(is); //selectObject可以传xPath表达式 //取得jdbc相关的value Element driverNameEle = (Element) doc.selectObject("/config/db-info/driver-name"); Element url = (Element) doc.selectObject("/config/db-info/url"); Element userName = (Element) doc.selectObject("/config/db-info/user-name"); Element passWord = (Element) doc.selectObject("/config/db-info/password"); //设置jdbc相关的value jdbcConfig.setDriverName(driverNameEle.getStringValue()); jdbcConfig.setUrl(url.getStringValue()); jdbcConfig.setUserName(userName.getStringValue()); jdbcConfig.setPassWord(passWord.getStringValue()); //System.out.println(strDriverName); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //加同步 public static synchronized XmlConfigReader getInstance(){ if(instance == null){ instance = new XmlConfigReader(); } return instance; } public JdbcConfig getJdbcConfig(){ return jdbcConfig; } public static void main(String[] args){ JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig(); //System.out.println(jdbcConfig.getDriverName()); //System.out.println(jdbcConfig.getUrl()); //System.out.println(jdbcConfig.getUserName()); System.out.println(jdbcConfig); } }

在用java读取这些的时候需要引入dom4j和jaxen包。引入这些包才能使用相应类。dom4j是一个java的xml-api。利用这里面的类和方法能很好的操纵xml文件。jaxen包主要是能用来传xPath,这个的意思就是xml文件里面的一二三级目录,在java中表现出来就是"/config/db-info/driver-name"。这样就可以从config下找到db-info,在db-info下找到driver-name.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值