一.XML作用
1.1配置
*.xml和*.properties、*.ini、*.yaml
1.2数据交互(获取第三方数据)
XML:webservices(axis2) -> xml -> 手机归属地、天气
JSON ajax 无刷新
<?xml version="1.0" encoding="UTF-8"?>
<tianqi>
<city>长沙</city>
<remark>暴雨转冰雹</remark>
</tianqi>
username=\u8D75\u56DB
password=123456
二.Java中3种配置位置及读取方式
2.1如何使用Properties读取配置文件
1)*.properties文件以键值对的方式存储数据;
2)使用Properties类读取配置文件;
2.2 配置位置
1)存放于根目录下,/代表获取src根目录的绝对路径
2)存放于同一类的包下,不加/代表同类名包下的相对路径;
3)存放于WEB-INF目录下
package com.zking.XML.util;
import java.io.InputStream;
public class Demo2 {
public static void main(String[] args) {
// 1)存放于根目录下,/代表获取src根目录的绝对路径
InputStream is = Demo2.class.getResourceAsStream("/student.xml");
System.out.println(is);
// 2)存放于同一类的包下,不加/代表同类名包下的相对路径;
InputStream is1 = Demo2.class.getResourceAsStream("demo.properties");
System.out.println(is1);
// 3)存放于WEB-INF目录下
}
}
三..dom4j+xpath解析xml文件
1)xpath类似数据库中的select语句;
2)Document有节点(Node)组成:元素节点、属性、文本等;
3)selectNodes()获取节点下所有子节点;
4)selectSingleNodes()获取单个节点信息;
5) xpath语法:/(定位路径)、@(获取属性)
案例:解析student.xml
package com.zking.XML.util;
import java.io.InputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class Demo3 {
public static void main(String[] args) {
//获取student.xml文件
InputStream is = Demo3.class.getResourceAsStream("/student.xml");
//创建SaxReader
SAXReader saxReader=new SAXReader();
//读取文件输入流并转换成Document
try {
//Document:文档对象,包含了元素 属性以及文本
Document document=saxReader.read(is);
//循环读取
//1) selectSingleNode:获取单个节点
//2) selectNodes:获取多个节点
List<Node> node = document.selectNodes("/students/student");
for (Node node2 : node) {
//将Node节点转换成元素节点(student)
Element elem=(Element) node2;
//获取节点中的属性
String pid = elem.attributeValue("pid");
System.out.println("pid="+pid);
//获取student节点下的name节点
Node nameNode = elem.selectSingleNode("name");
//将Node节点转换成元素节点
Element nameElem=(Element) nameNode;
//获取name节点的文本
String text = nameElem.getText();
System.out.println(text);
}
System.out.println();
//直接一行搞定获取student.xml中<student pid="p02">中的name属性的文本,一行代码搞定
String text = document.selectSingleNode("/students/student[@pid='p02']/name").getText();
System.out.println (text);
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student pid="p01">
<name>张三</name>
</student>
<student pid="p02">
<name>李四</name>
</student>
<student pid="p03">
<name>王五</name>
</student>
</students>