XML的作用
配置文件(保存数据)
数据交互(获取第三方数据)
java中3肿配置文件位置及读取方式
- 存在一根目录下,/代表获取src根目录的绝对路径
- 存在于同一类的包下、不加/代表同类名包下的相对路径
- 存在于WEB-INF ——servletCont sc=this.getServletContext();
InputStream is=sc.getResourceAsStream("/WEB-INF");
Sax解析xml文件
解析过程
- 获取读取xml文件的io流
- 创建xml读取器对象SaxReader
- 使用SaxReadrdr对象读取xml文件获得Docment对象
- 通过xpath获取文件中节点,元素,文本,属性信息完成解析
解析students.xml
<?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>
解析过程如下
package com.zking.dome;
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 Dome02 {
public static void main(String[] args) {
//1.获取io流
InputStream is = Dome02.class.getResourceAsStream("/students.xml");
//2、创建SaxReader对象 读取器对象
SAXReader sr=new SAXReader();
try {
//3、读取配置文件,获取Docement对象
Document doc = sr.read(is);
//4、使用xpath解析document对象
List<Node> studentNode = doc.selectNodes("/students/student");
for (Node node : studentNode) {
//找到name节点
Node name = node.selectSingleNode("name");
//获取name节点的文本信息
String text = name.getText();
System.out.println(text);
//节点没有属性值 获取不了
//节点的属性值 需要将节点转换成Element 元素对象
Element el=(Element)node;
String sid = el.attributeValue("sid");
System.out.println(sid);
}
} catch (DocumentException e) {
throw new RuntimeException(e);
}
}
}