XML
1.XML的作业
1.1 配置 (*.XML 和 *.propertines)
1.2 数据的交互(获取第三方数据)
2.JAVA中的3种配置位置
2.1 如何使用Propertines读取配置文件
- ① *.propertines 文件以键值对的方式存储数据
- ② 使用Propertines类读取配置文件
2.2 配置位置
- ① 存放于根目录下,/代表获取src根目录的绝对路径
InputStream ra = Demo.class.getResourceAsStream("/config.properties");
//创建一个properties配置文件类
Properties ppt = new Properties();
- ② 存放于同一类的包下,不加/代表同类名包下的相对路径;
InputStream ra = Demo.class.getResourceAsStream("config.properties");
//创建一个properties配置文件类
Properties ppt = new Properties();
- ③ 存放于WEB-INF目录下
ServletContext sc=this.getServletContext();
InputStream is=sc.getResourceAsStream("/WEB-INF/db.properties");
3.dom4j+xpath解析XML文件
两个jar包 dom4j-1.6.1.jar 和 jaxen-1.1-beta-6.jar
- 1)xpath类似数据库中的select语句;
- 2)Document有节点(Node)组成:元素节点、属性、文本等;
- 3)selectNodes()获取节点下所有子节点;
- 4)selectSingleNode()获取单个节点信息;
- 5)xpath语法:/(定位路径)、@(获取属性)
InputStream ra =
Demo.class.getResourceAsStream("student.xml");
//创建SAXRead对象
SAXReader read = new SAXReader();
try {
//加载xml文件输入流并返回Document对象
Document doc= read.read(ra);
//Document 有节点(Node)组成:元素节点,属性文本等
//获取节点的方式
//1.selectNodes()获取所有节点的集合
//2.selectSingleNode()获取单个节点对象
//Xpath语法:/(定位路径),@(获取属性)
List<Node> selectNodes = doc.selectNodes("/students/student");
//循环遍历/students/student下的元素节点
for (Node node : selectNodes) {
//node==student元素节点
Element elm = (Element) node;
//获取当前student元素节点的属性
String pid = elm.attributeValue("pid");
System.out.println(pid);
//获取student下的子节点元素,只有一个,用selectSingleNode
Element nameElem =
(Element) elm.selectSingleNode("name");
String nameTxT = nameElem.getText();
System.out.println("name="+nameTxT);
}
System.out.println("---------------------------------");
//获取某个student节点的name文本
Element elname=
(Element) doc.selectSingleNode("/students/student[@pid='p02']");
String namet = (elname.selectSingleNode("name")).getText();
System.out.println(namet);
System.out.println("------------------------------");
//简化
Element nametx=
(Element) doc.selectSingleNode("/students/student[@pid='p01']/name");
System.out.println(nametx.getText());
} catch (DocumentException e) {
e.printStackTrace();
}
}
-------------运行结果---------------------------
p01
name=张三
p02
name=李四
p03
name=王五
---------------------------------
李四
------------------------------
张三
Student.xml文件
<?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>