解析配置文件

我们常见的配置文件:

        properties

        josn

        yaml

        hocon

当然,我们web开发中使用的web.xml文件也是常使用的配置文件。

在Java中我们想要使用配置文件则需要用代码将文件解析出来。

在Java类中解析配置文件:       

 注意:该方式只能读取类路径下的配置文件,有局限但是如果配置文件在类路径下比较方便。

1     Properties p = new Properties();
2     // 使用ClassLoader加载properties配置文件生成对应的输入流
3     InputStream in = PropertiesMain.class.getClassLoader().getResourceAsStream("config/config.properties");
4     // 使用properties对象加载输入流
5     p.load(in);
6     //获取key对应的value值
7     p.getProperty(String key);

注意:该方式的优点在于可以读取任意路径下的配置文件

1     Properties p = new Properties();
2     // 使用InPutStream流读取properties文件
3     BufferedReader bufferedReader = new BufferedReader(new FileReader("E:/config.properties"));
4     p.load(bufferedReader);
5     // 获取key对应的value值
6     p.getProperty(String key);

 此处代码使用的是java.util.ResourceBundle类直接解析资源,更为方便:

//使用java.util.ResourceBundle类来直接读取  路径名必须是包的全名加文件名,不需要文件的后缀名
		ResourceBundle b = ResourceBundle.getBundle("com/comfig/jdbc");
		//直接使用ResourceBundle工具类的getString方法就能得到资源信息
		String name = b.getString("jdbc.url");
		System.out.println(name);

代码输出:

jdbc:mysql://localhost:3306/test
 

java中并没有直接定义出解析的 类或者方法,我们就得借助外界的工具包:

解析xml文件的步骤:

package com.test;

import java.io.InputStream;

import java.util.List;

import javax.lang.model.element.Element;

 

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.dom4j.tree.DefaultElement;

public class Test {
          public static void main(String[] args) throws DocumentException {
              //找到配置文件,得到输入流
             InputStream as = Test.class.getResourceAsStream("student.xml");
             //导入jar包,实例化jar包SAXReader对象
             SAXReader sa = new SAXReader();
             //调用SAXReader对象的read方法参数为输入流 返回最高节点
             Document d = sa.read(as);
             //使用节点的selextNodes方法查找需要查找的节点 返回节点集合
             List<DefaultElement> ln = d.selectNodes("students/student");
            for (DefaultElement e : ln) {//遍历该集合
                //asXML方法使节点看起来更清晰
                System.out.println(e.asXML());
                //得到该节点的属性个数
                System.out.println(e.attributeCount());
                //得到该节点的class属性值
                System.out.println(e.attributeValue("class"));
                //得到该节点的name子节点//返回单个节点Note  得到该节点的内容
                System.out.println(e.selectSingleNode("name").getStringValue());
            }
            //得到是T264班的学生的节点
             Node n = d.selectSingleNode("students/student[@class='T264']/name");
             //打印该节点的内容
             System.out.println(n.getStringValue());
             
        }
}
 

上部分代码输出为: 

        

<student id="1001">
      <name>李洲</name>
      <age>18</age>
      <tel>119</tel>
   </student>
1
null
李洲
<student id="1002" class="T264">
      <name>阳波</name>
      <age>38</age>
      <tel>120</tel>
   </student>
2
T264
阳波
阳波
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值