XML 和properties

properties:

1、存放于src根目录下

//获取到同包下的资源文件,将其转换成流对象
//InputStream is= PropertiesDemo.class.getResourceAsStream("/db.properties");
//需要专门的工具类来讲流中的数据
Properties p=new Properties();
p.load(is);
System.out.println(p.getProperty("uname"));
System.out.println(p.getProperty("upass"));

2、与读取配置文件的类在同一包

//InputStream is= PropertiesDemo.class.getResourceAsStream("db.properties");

Properties p=new Properties();
p.load(is);
System.out.println(p.getProperty("uname"));
System.out.println(p.getProperty("upass"));

3、存放在WEB-INF(或其子目录下)

//新建一个servlet类

ServletContext context=request.getServletContext();
InputStream is=context.getResourceAsStream("/WEB-INF/db.properties");
Properties p=new Properties();
p.load(is);
System.out.println(p.getProperty("uname"));
System.out.println(p.getProperty("upass"));

  

4. dom4j+xpath解析xml文件

InputStream is = XMLDemo.class.getResourceAsStream("students.xml");
// SAXReader saxReader = new SAXReader();
// Document doc = saxReader.read(is);
// System.out.println(doc.asXML());
// // xpath
// List<Element> stueles=doc.selectNodes("/students/student");
// for (Element element : stueles) {
//// if ("s002".equals(element.attributeValue("sid"))) {
//// System.out.println(element.asXML());
// Element name=(Element)element.selectSingleNode("name");
// System.out.println(name.asXML());
// System.out.println(name.getText());
// // }
// }
// Element stuele =(Element) doc.selectSingleNode("/students/student[@sid='s001']");
// System.out.println(stuele.asXML());

  

package com.lingerqi.demo;

import java.io.InputStream;
import java.util.List; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; /**
* 解析指定路径下的资源文件(dom4j)
*
* @author xyls
*
*/
public class XMLDemo { public static void main(String[] args) throws Exception { InputStream is = XMlDemo.class.getResourceAsStream("config.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(is);
List<Element> stueles = doc.selectNodes("/config/action");
for (Element element : stueles) {
Element forward = (Element) element.selectSingleNode("forward");
String type = element.attributeValue("type");
String path = element.attributeValue("path");
// if (path.equals("/loginAction")) {
// 2、获取第二个action中的type的值
// System.out.println(type);
// }
// 1、获取所有action中的type的值
// System.out.println(type);
// String fpath=forward.attributeValue("path"); // System.out.println(type);
if (element.attributeValue("path").equals("/loginAction")) {
List<Element> ford = (List<Element>) element.selectNodes("forward");
for (Element element2 : ford) {
String fpath = forward.attributeValue("path");
// 3、获取第二个action的所有forward的path
System.out.println(fpath);
}
}
if (path.equals("/loginAction")) {
// 4、获取第二个action的第二个forward的path
// System.out.println(fpath);
}
}
// if (path.equals("/loginAction")) {
// 4、获取第二个action的第二个forward的path
// System.out.println(fpath);
// }
}
}

  

Java中配置文件的三种配置位置及读取方式的更多相关文章

  1. java中 this 的三种用法

    Java中this的三种用法 调用属性 (1)this可以调用本类中的任何成员变量 调用方法(可省略) (2)this调用本类中的成员方法(在main方法里面没有办法通过this调用) 调用构造方法 ...

  2. CentOS中JDK的三种配置方法

    第一种方法(相对稳妥): 使用yum直接安装,在root用户下执行 "yum install java-openjdk-*" 第二种方法(最为稳妥): 前往'https://www ...

  3. Java中对象的三种状态

    Java中的对象的三种状态是和垃圾回收紧密相关的,因此有必要深究. 状态一:可触及态:从根节点开始,可以搜索到这个对象,也就是可以访问到这个对象,也有人将其称为可达状态. 状态二:可复活态:从根节点开 ...

  4. java中线程的三种实现方式

    一下记录下线程的3中实现方式:Thread,Runnable,Callable 不需要返回值时,建议使用Runnable:有返回值时建议使用Callable 代码如下所示: package com.f ...

  5. Java中Map的三种遍历方法

    Map的三种遍历方法: 1. 使用keySet遍历,while循环: 2. 使用entrySet遍历,while循环: 3. 使用for循环遍历.   告诉您们一个小秘密: (下↓面是测试代码,最爱看 ...

  6. Java中Singleton的三种实现方式解析

    一.什么是Singleton? <设计模式>的作者.Eclipse和 Junit 的开发者 Erich Gamma 在它的理论体系中将 Singleton 定义为仅仅被实例化一次的类.在当 ...

  7. SpringMVC中HandlerMapping的三种配置方式

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE beans PUBLIC "-/ ...

  8. JAVA中this的三种用法的详解

    this关键字必须放在非静态方法里面 this关键字代表自身,在程序中主要的使用用途有以下几个方面: ? 使用this关键字引用成员变量 ? 使用this关键字在自身构造方法内部引用其它构造方法 ? ...

  9. 正则表达式在Java中应用的三种典型场合:验证,查找和替换

    正则式在编程中常用,总结在此以备考: package regularexp; import java.util.regex.Matcher; import java.util.regex.Patter ...

随机推荐

  1. 数据库系统原理(第四章:SQL与关系数据库基本操作 )

    一.SQL概述 sql是结构化查询语言(Structured Query Language,SQL)是专门用来与数 据库通信的语言,它可以帮助用户操作关系数据库. SQL的特点: SQL不是某个特定数 ...

  2. .NET Core下自带容器IServiceCollection以及AutoFac以及AutoFac中AOP简介

    https://www.cnblogs.com/artech/p/net-core-di-01.html 大内老A的在.NET Core下对这些的介绍,有一系列文章 https://www.cnblo ...

  3. MD5哈希算法及其原理

    - MD5功能 MD5算法对任意长度的消息输入,产生一个128位(16字节)的哈希结构输出.在处理过程中,以512位输入数据块为单位. - MD5用途及特征 MD5通常应用在以下场景: 1.防篡改,保 ...

  4. HiGV ui代码流程

    在海思PDT_Init下有一个这样的函数HI_PDT_UI_Init(): 1. HI_PDT_UI_Init()函数: /*public, it should be called by main() ...

  5. 批量执行用例,且结果显示在html中,python控制台也会显示运行过程

    下载HTMLTestRunner.py放到python安装目录的Lib下: 如下以登录为例,创建不同的.py文件, ========================================== ...

  6. jQuery function函数详解

    一.$(function(){}); $(document).ready(function(){})可以简写成$(function(){}); $(document).ready 里的代码是在页面内容 ...

  7. 201871010113-刘兴瑞《面向对象程序设计(java)》第二周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>    https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址> ...

  8. python27期前端

    第一天笔记:HTML:是一种标识性的语言css:层叠样式表是一种用来表现HTML等文件样式(效果)的计算机语言JavaScript:简称“JS”,是一种属于网络的脚本语言 常用来为网页添加各式各样的动 ...

  9. 2019 SDN上机第四次作业

    2019 SDN上机第4次作业 1. 解压安装OpenDayLight控制器(本次实验统一使用Beryllium版本) 修改环境变量 2. 启动并安装插件 3. 用Python脚本搭建如下拓扑,连接O ...

  10. 冒泡排序法(C语言)

    冒泡排序(Bubble Sort)一种计算机科学领域的较简单的排序算法.它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小.首字母从从Z到A)错误就把他们交换过来.走访元素的工 ...