xml解析及dom4j+xpath解析
程序员文章站
2022-06-07 14:15:14
...
java配置文件的三种配置方法及读取
通过db.properties获取uname和upass值
三种配置
1.配置在src根目录下,如图所示:
实现代码如下:
加载根路径下的资源文件db.properties文件,到jvm称为流对象
// "/" 代表的是跟路径--》src就是根路径 source folder--》物理将代码分层,jvm不会读取这个文件夹
InputStream in = Demo1.class.getResourceAsStream("/db.properties");
// Java.utils.properties
Properties p= new Properties();
// 此时p中就加载了流对象,从而就拥有了该资源文件的所有配置信息
p.load(in);
System.out.println(p.getProperty("uname"));
System.out.println(p.getProperty("upass"));
类名.Class.getResourceAsStream这个方法具有容错性,它包容错误不暴露出来
运行结果:
2.读取同包下的文件
实现代码:
InputStream in = Demo1.class.getResourceAsStream("db.properties");
// Java。utils。properties
Properties p= new Properties();
// 此时p中就加载了流对象,从而就拥有了该资源文件的所有配置信息
p.load(in);
System.out.println(p.getProperty("uname"));
System.out.println(p.getProperty("upass"));
在同包下的运行结果:
如果同包下不存在db.properties,不报错,睁一只眼闭一只眼
不在同包下的运行结果:
3.WEB-INF(或其子目录下)
实现代码如下:
//获取上下文
ServletContext context = req.getServletContext();
// 获取web-inf下的db.properties
InputStream in = context.getResourceAsStream("/WEB-INF/db.properties");
Properties p= new Properties();
// 此时p中就加载了流对象,从而就拥有了该资源文件的所有配置信息
p.load(in);
System.out.println(p.getProperty("uname"));
System.out.println(p.getProperty("upass"));
运行结果:
dom4j解析
首先通过demo4j获取到名字为小芳,id=s002的学生信息,然后在控制台进行打印
实现步骤分析:
1、获取解析文件
InputStream in = Demo3.class.getResourceAsStream("/students.xml");
SAXReader reader=new SAXReader();
Document doc = reader.read(in);
2、解析得到所有的student标签
//这是得到所有students标签
System.out.println(doc.asXML());
3、遍历得到每一个student标签xml内容
List<Element> stuEle=doc.selectNodes("/students/student");
for(Element stuEles:stuEle) {
System.out.println(stuEles.asXML());
System.out.println("~~~~~~~~~~~~~~~~~~");
}
4、判断该student的sid是否是s002
List<Element> stuEle=doc.selectNodes("/students/student");
for(Element stuEles:stuEle) {
if("s002".equals(stuEles.attributeValue("sid"))) {
System.out.println(stuEles.asXML());
System.out.println("~~~~~~~~~~~~~~~~~~");
}
5、获取student下的name值
List<Element> stuEle=doc.selectNodes("/students/student");
for(Element stuEles:stuEle) {
if("s002".equals(stuEles.attributeValue("sid"))) {
// 这是得到s002下的name值
Element nameEle=(Element) stuEles.selectSingleNode("name");
System.out.println(nameEle.asXML());
}
6、一并打印sid以及name值
List<Element> stuEle=doc.selectNodes("/students/student");
for(Element stuEles:stuEle) {
if("s002".equals(stuEles.attributeValue("sid"))) {
// 这是得到s002下的name值
Element nameEle=(Element) stuEles.selectSingleNode("name");
// 打印sid以及name值
System.out.println("sid="+stuEles.attributeValue("sid")+",name="+nameEle.getText());
}
运行结果:
xpath解析
实现步骤分析:
1、获取解析文件
2、判断该student的sid是否是s002
3、获取student下的name值
4、一并打印sid以及name值
如图所示:
总结
本人觉得用xpath解析比较方便一些,它的代码少一些,不用像dom4j那样去判断了