铁子们哈喽啊今天分享的是xml解析
老规矩分享前先看看思维导图
目录
一,java中配置文件的三种配置位置及读取方式
配置文件有什么好处:
1.使代码更加灵活
2.维护性更高
各个地方的位置有什么讲究
答 :同一层级:方便同步编码
二,dom4j 的使用
经常用到
selectNodes 获取多个标签
selectSingleNode 获取单个标签
attributeValue 获取属性值
getText 获取标签值
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>
示例代码:
效果如下:
三,xpath 的使用
语法
1) / :代表查找
2) @ 代表精确定位
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.tsq.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 {
// *[@id="__layout"]/div/div[2]/section/div[5]/div[2]/div[2]/ul/li[1]/div[2]/p[1]
// /代表层级,代表查找
// @精准定位
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());
Element studentsEle = (Element) doc.selectSingleNode("students");
List<Element> stuEles = studentsEle.selectNodes("student");
for (Element stuEle : stuEles) {
if("s002".equals(stuEle.attributeValue("sid"))) {
System.out.println(stuEle.selectSingleNode("name").getText());
}
}
}
}
效果如下