目录
一、Java中的配置文件的三种配置位置及读取方式
1、同包
Demo1.class.getResourceAsStream("db.properties")
Demo1是类名
2、根目录
Demo1.class.getResourceAsStream("/db.properties")
3、WIN-INF安全路径
注意:WIN-INF文件下的jsp界面不能直接打开
Context().getResourceAsStream("/WEN-INF/db.properties");
二、dom4的使用
dom4的使用方法
1、selectNodes:根据标签名,返回标签集合
2、selectSingleNode:根据标签名 返回单个标签,通常用于已经知晓标签只会出现一次
3、attrlbuteValue:拿到属性值
4、getText:拿到标签的文本内容
案例:
解析student.xml内容上述图片
package com.zwc.parse;
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 Demo2 {
public static void main(String[] args) throws Exception {
InputStream in = Demo2.class.getResourceAsStream("students.xml");
SAXReader sr = new SAXReader();
//将配置文件的所有内容取到了
Document doc = sr.read(in);
// selectNodes 根据标签名.返回标签集合
// System.out.println(doc.asXML);
// List<Element> selectNodes = doc.selectNodes("students");
// System.out.println(selectNodes.size());
// List<Element> studentEles = selectNodes.get(0).selectNodes("student");
// System.out.println(studentEles.size());
// selectNodes 根据标签名 返回单个标签,通常用于已经知晓改标签只会出现一次
Element studentEle = (Element) doc.selectSingleNode("students");
List<Element> studentEles = studentEle.selectNodes("student");
for (Element stuEle : studentEles) {
System.out.println(stuEle.attributeValue("sid"));//attributevalue是拿到属性值
System.out.println(stuEle.selectSingleNode("name").getText());//gettext拿到标签里的内容
}
}
}
该结果是拿到ID和名字
三、Xpath的使用
1、语法:/ 代表定位路径
@ 代表属性
代码如下:
package com.zwc.parse;
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) throws Exception {
// /:代表查找
// @:代表精准定位
InputStream in = Demo3.class.getResourceAsStream("students.xml");
SAXReader sr = new SAXReader();
Document doc = sr.read(in);
Element stus002 = (Element) doc.selectSingleNode("/students/student[@sid='s002']/name");
System.out.println(stus002.getText());
}
}
运行结果:
四、案例
下面是config.xml界面
1、获取所有action中的type值
代码如下:
package com.zwc.parse;
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 Demo4 {
public static void main(String[] args) throws Exception {
// 获取所有action中type的值
InputStream in = Demo4.class.getResourceAsStream("config.xml");
SAXReader sr = new SAXReader();
Document doc = sr.read(in);
Element node = (Element) doc.selectSingleNode("config");
List<Element> list = node.selectNodes("action");
for (Element stuele : list) {
System.out.println(stuele.attributeValue("type"));
}
}
}
运行结果如下:
2、获取第二个action中的type值
代码如下:
package com.zwc.parse;
import java.io.InputStream;
import java.util.List;
import javax.el.ELManager;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class Demo5 {
public static void main(String[] args) throws Exception {
//获取第二个action中type的值
InputStream in = Demo4.class.getResourceAsStream("config.xml");
SAXReader sr = new SAXReader();
Document doc = sr.read(in);
Element selectSingleNode = (Element) doc.selectSingleNode("config");
List<Element> selectNodes = selectSingleNode.selectNodes("action");
for (Element stuele : selectNodes) {
if("/loginAction".equals(stuele.attributeValue("path"))) {
System.out.println(stuele.attributeValue("type"));
}
}
}
}
运行结果如下:
3、获取第二个action的所有forward的path
代码如下:
package com.zwc.parse;
import java.io.InputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Demo6 {
public static void main(String[] args) throws Exception {
InputStream in = Demo6.class.getResourceAsStream("config.xml");
SAXReader sr = new SAXReader();
Document doc = sr.read(in);
Element singleNode = (Element) doc.selectSingleNode("config");
List<Element> selectNodes = singleNode.selectNodes("action");
List<Element> nodes = selectNodes.get(1).selectNodes("forward");
for (Element element : nodes) {
System.out.println(element.attributeValue("path"));
}
}
}
运行结果:
4、获取第二个action的第二个forward的path
代码如下:
package com.zwc.parse;
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 Demo7 {
public static void main(String[] args) throws Exception {
InputStream in = Demo6.class.getResourceAsStream("config.xml");
SAXReader sr = new SAXReader();
Document doc = sr.read(in);
Element singleNode = (Element) doc.selectSingleNode("config");
List<Element> selectNodes = singleNode.selectNodes("action");
List<Element> nodes = selectNodes.get(1).selectNodes("forward");
for (Element element : nodes) {
if("success".equals(element.attributeValue("name")))
System.out.println(element.attributeValue("path"));
}
}
}
运行结果: