目录
一、Java中配置文件的三种配置位置及读取方式
拿到同包下的文件: 类名.class.getResourceAsStream("xxx")
拿到根目录下的文件: 类名.class.getResourceAsStream("/xxx")
拿到WIN-INF安全路径: context.getResourceAsStream("/WIN-INF/xxx")
二、dome4j常用方法
拿到多个元素:selectNodes
拿到单个元素:selectSingleNode
拿到根元素:getRootElement()
获取元素的节点值:attributeValue
拿到元素文本:getText
三、xpath语法
/ : 定位路径
@ : 属性
案例
以下是我们要解析的xml文件👇
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config[
<!ELEMENT config (action*)>
<!ELEMENT action (forward*)>
<!ELEMENT forward EMPTY>
<!ATTLIST action
path CDATA #REQUIRED
type CDATA #REQUIRED
>
<!ATTLIST forward
name CDATA #REQUIRED
path CDATA #REQUIRED
redirect (true|false) "false"
>
]>
<config>
<action path="/studentAction" type="org.lisen.mvc.action.StudentAction">
<forward name="students" path="/students/studentList.jsp" redirect="false"/>
</action>
</config>
解析前导入所需要用到的jar包 👇
解析👇
package com.xyz.mvcdemo;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class XmlReader {
public static void main(String[] args) throws Exception {
//通过 .calss获取类的输入流
InputStream in = XmlReader.class.getResourceAsStream("/config.xml");
//dome4j的读取方法
SAXReader reader = new SAXReader();
Document doc = reader.read(in);
//获取根元素
Element rootElement = doc.getRootElement();
//获取根元素下的action元素
List<Element> action = rootElement.selectNodes("action");
//遍历action
for (Element e : action) {
//读取action元素下节点的值
String path = e.attributeValue("path");
String type = e.attributeValue("type");
//打印结果
System.out.println("action path = "+path);
System.out.println("action type = "+type);
//获取action元素下的forward元素
List<Element> forward = e.selectNodes("forward");
for (Element f : forward) {
//读取forward元素下节点的值
String name = f.attributeValue("name");
String fpath = f.attributeValue("path");
String redirect = f.attributeValue("redirect");
//打印结果
System.out.println("forward name = "+name);
System.out.println("forward path = "+fpath);
System.out.println("forward redirect = "+redirect);
}
}
}
}
运行结果如下图所示
XML解析就分享到这啦~ 内容不是很多哦