1.XML作用
1.1配置
*.xml和*.properties、*.ini、*.yaml
1.2数据交互(获取第三方数据)
XML:webservices(axis2) -> xml -> 手机归属地、天气
JSON ajax 无刷新
2.Java中3种配置位置及读取方式
2.1如何使用Properties读取配置文件
1)*.properties文件以键值对的方式存储数据;
2)使用Properties类读取配置文件;
Demo1.java
public static void main(String[] args) throws IOException {
/**
* 只要是跟文件相关的都要抛异常
*/
// 1. 获取文件输入流
InputStream is = Demo1.class.getResourceAsStream("demo.properties");
// 2.创建properties对象
Properties prop = new Properties();
// 3.加载文件输入流
prop.load(is);
// 4.读取配置文件内容
String username = prop.getProperty("username");
String password = prop.getProperty("password");
Object url = prop.getOrDefault("url", "//www.baidu.com");
System.out.println("username=" + username + ",password=" + password);
System.out.println("url=" + url);
}
Demo2.java
public static void main(String[] args) throws IOException {
/**
* 只要是跟文件相关的都要抛异常
*/
// 1. 获取文件输入流
InputStream is = Demo1.class.getResourceAsStream("demo.properties");
// 2.创建properties对象
Properties prop = new Properties();
// 3.加载文件输入流
prop.load(is);
// 4.读取配置文件内容
String username = prop.getProperty("username");
String password = prop.getProperty("password");
Object url = prop.getOrDefault("url", "//www.baidu.com");
System.out.println("username=" + username + ",password=" + password);
System.out.println("url=" + url);
}
2.2 配置位置
1)存放于根目录下,/代表获取src根目录的绝对路径
2)存放于同一类的包下,不加/代表同类名包下的相对路径;
3)存放于WEB-INF目录下
Demo3.java
public class Demo2 {
public static void main(String[] args) {
// 2.2 配置位置
// 1)存放于根目录下,/代表获取src根目录的绝对路径
InputStream si = Demo2.class.getResourceAsStream("/student.xml");
System.out.println(si);
// 2)存放于同一类的包下,不加/代表同类名包下的相对路径;
InputStream si1 = Demo2.class.getResourceAsStream("demo.properties");
System.out.println(si1);
}
3.dom4j+xpath解析xml文件
1)xpath类似数据库中的select语句;
2)Document有节点(Node)组成:元素节点、属性、文本等;
3)selectNodes()获取节点下所有子节点;
4)selectSingleNodes()获取单个节点信息;
5) xpath语法:/(定位路径)、@(获取属性)
Demo4.java
public static void main(String[] args) {
// 1.读取Student.xml文件输入流
InputStream si = Demo3.class.getResourceAsStream("/student.xml");
// 2.创建SAXRreader对象
SAXReader saxRead = new SAXReader();
// 3.读取文件输入流并转换成Document对象
// Document:包含元素节点,属性
try {
Document doc = saxRead.read(si);
// 4.循环遍历
// 1)selectNodes:获取多个节点,返回List
// 2)selectSingleNode:获取单个节点
// 3)xpath语法:/代表定位路径
List<Node> root = doc.selectNodes("/students/student");
for (Node node : root) {
// 5.将Node节点转换成元素节点Element(Student)
Element elem = (Element) node;
// 6.获取元素节点的属性
String pid = elem.attributeValue("pid");
System.out.println("pid=" + pid);
// 7.获取Student节点下的name节点
Node nameNode = elem.selectSingleNode("name");
System.out.println(nameNode.getText());
}
// 简化xpath
// //*[@bid="title-content"]/span[1]
Node no = doc.selectSingleNode("students/student[@pid='p02']/name");
System.out.println(no.getText());
} catch (DocumentException e) {
e.printStackTrace();
}
}