客户端与服务器常用的数据交换格式有:xml、json、html
xml体积、占宽带比较大,解析方式有Dom4j、Sax、Pull
xml = “文档树”
xml文件是树结构的,每个封闭的标签都是一个节点,每个节点都有自己的属性和内容
一个xml文件只有一个根节点,但每个节点可以有多个子节点
引入dom4j的jar包
<dependencies>
<!-- 添加dom4j -->
<!-- https://mvnrepository.com/artifact/dom4j/dom4j -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
创一个xml文件
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student1 id="01">
<姓名>ymk</姓名>
<性别>男</性别>
<爱好>唱、跳、rap、篮球</爱好>
<QQ号>382038455</QQ号>
</student1>
<student2 id="02">
<姓名>ymk's girlfriend</姓名>
<性别>女</性别>
<爱好>唱、跳、rap、篮球</爱好>
<QQ号>4382038455</QQ号>
</student2>
</students>
解析xml Demo(深搜写法)
// xml路径
private static String fileName = "E:\\java\\eclipse-workspace\\SpringIOC\\src\\main\\java\\com\\ymk\\test\\xml\\test_dom4j.xml";
public static void main(String[] args) throws DocumentException {
SAXReader saxReader = new SAXReader();
// SAXReader读取xml
Document read = (Document) saxReader.read(new File(fileName));
// 获取根节点
Element rootElement = read.getRootElement();
// 解析xml
getBean(rootElement);
}
/**
* @classDesc: 功能描述: (深搜解析)
* @author: ymk
* @createTime 2019年6月1日
* @version v1.0
*/
public static void getBean(Element rootElement) {
System.out.println("节点名称:" + rootElement.getName());
// 拿到节点属性
List<Attribute> attritubes = rootElement.attributes();
for (Attribute attribute : attritubes) {
System.out.println("属性:" + attribute.getName() + "---" + attribute.getText());
}
// 节点名称
if (!rootElement.getTextTrim().equals("")) {
System.out.println(rootElement.getName() + "---" + rootElement.getText());
}
// 返回下一个节点
Iterator<Element> eIterator = rootElement.elementIterator();
while (eIterator.hasNext()) {
// 获取当前节点值
Element next = eIterator.next();
// 递归
getBean(next);
}
}
结果:
节点名称:students
节点名称:student1
属性:id---01
节点名称:姓名
姓名---ymk
节点名称:性别
性别---男
节点名称:爱好
爱好---唱、跳、rap、篮球
节点名称:QQ号
QQ号---382038455
节点名称:student2
属性:id---02
节点名称:姓名
姓名---ymk's girlfriend
节点名称:性别
性别---女
节点名称:爱好
爱好---唱、跳、rap、篮球
节点名称:QQ号
QQ号---4382038455
参考:蚂蚁课堂