J2EE&XML解析&dom4j的使用
目录
同包 Demo01.class.getResourceAsStream("db.properties");
根路径 Demo01.class.getResourceAsStream("/db.properties");
WIN-INF安全路径 Demo01.class.getResourceAsStream("/WEB-IEF/db.properties");
一.Java中配置文件的三种方式及读取方式
-
同包 Demo01.class.getResourceAsStream("db.properties");
-
根路径 Demo01.class.getResourceAsStream("/db.properties");
-
WIN-INF安全路径 Demo01.class.getResourceAsStream("/WEB-IEF/db.properties");
二.dom4j的使用 常用方法
-
selectSingleNode
-
selectNodes
-
attributeValue
-
getText
三.xpath的使用
语法
① / 定位路径
② @ 属性
案例
查找s002学生姓名
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student sid="s001">
<name>小明</name>
</student>
<student sid="s002">
<name>小芳</name>
</student>
<student sid='s003'>
<name>小王</name>
</student>
</students>
//解析 查找s001学生姓名
public class Demo02 {
public static void main(String[] args) throws DocumentException {
InputStream in = Demo02.class.getResourceAsStream("students.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(in);
String name = doc.selectSingleNode("/students/student[@sid='s001']/name").getText();
System.out.println(name);
}}
例如:
package com.zking.xmlparse;
import java.io.InputStream;
import java.util.List;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;public class Demo04 {
public static void main(String[] args) throws DocumentException {
//先通过类路径获取XML文件的输入流
InputStream in = Demo04.class.getResourceAsStream("/config.xml");
SAXReader reader = new SAXReader();
//然后使用SAXReader读取输入流并解析成Document对象
Document doc = reader.read(in);
//接着获取XML文件的根元素
Element root = doc.getRootElement();
//并通过selectNodes方法获取所有名为"action"的子元素列表
List<Element> nodes = root.selectNodes("action");
//遍历每一个"action"元素
for (Element el : nodes) {
//并获取其"path"和"type"属性的值
String path = el.attributeValue("path");
String type = el.attributeValue("type");
System.out.println(path);
System.out.println(type);
//然后通过selectNodes方法获取其所有名为"forward"的子元素列表
List<Element> forward = el.selectNodes("forward");
//遍历每一个"forward"元素
for (Element el2 : forward) {
//并获取其"name"、"path"和"redirect"属性的值
String name = el2.attributeValue("name");
String path2 = el2.attributeValue("path");
String redirect = el2.attributeValue("redirect");
//最后将获取的值输出到控制台上
System.out.println(name);
System.out.println(path2);
System.out.println(redirect);
}
}
}}