XML配置文件的解析
解析需要知道的部分知识
获得不同存放路径下XML文件的方法
类名.class.getResourceAsStream(“xxx”):拿到同包下的文件
类名.class.getResourceAsStream(“/xxx”):拿到根目录下的文件
context.getResourceAsStream(“/WIN-INF/xxx”):拿到WIN-INF安全路径
dom4j常用方法
selectNodes:拿到多个元素
selectSingleNode:拿到单个元素
getRootElement():拿到根元素
attributeValue:只有元素才可以点出这个方法来获取值
getText:拿到元素文本
xpath语法
/:定位路径
@:属性
案例
创建xml文件config.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>
<action path="/studentAction02" type="org.lisen.mvc.action.StudentAction">
<forward name="students02" path="/students/studentList.jsp" redirect="false"/>
</action>
</config>
导入需要使用的jar包
编写执行代码
package com.demo;
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 xmlRead {
public static void main(String[] args) throws Exception {
InputStream in = xmlRead.class.getResourceAsStream("/config.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(in);
Element rootElement = doc.getRootElement();
List<Element> action = rootElement.selectNodes("action");
for (Element e : action) {
String path = e.attributeValue("path");
String type = e.attributeValue("type");
System.out.println("action path="+path);
System.out.println("action type="+type);
List<Element> forward = e.selectNodes("forward");
for (Element fe : forward) {
String fpath = fe.attributeValue("path");
String name = fe.attributeValue("name");
String redirect = fe.attributeValue("redirect");
System.out.println("forward path="+fpath);
System.out.println("forward name="+name);
System.out.println("forward redirect="+redirect);
}
System.out.println("==========================");
}
System.out.println("已完成解析");
}
}
输出结果: