进入官网dom4j ->`地址,下载对应jdk版本的dom4j。
| 对象 | 说明 |
|---|---|
| Document | 表示整个xml文档 |
| Element | 标签 |
| Attribute | 属性 |
| Text | 文本内容 |
3.2 创建测试类进行解析潘金莲 女 panpan@itcast.cn 武松 男 wusong@itcast.cn 武大狼 男 wuda@itcast.cn 我是西门庆
测试使用的是junit包,如果没有导入包,直接在main里面执行此方法也行
首先把contact.xml放入src目录下,然后自己在src目录创建一个包,里面创建一个测试类,代码如下
package com.itheima.d1.dom4j;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class Dom4jDemo2 {
@Test
public void parseToList() throws Exception {
//1.创建解析器对象,解析xml.获取document
SAXReader saxReader=new SAXReader();
//加载xml 使用类加载资源的/可用直接定位到src
InputStream is=Dom4jDemo2.class.getResourceAsStream("/Contacts2.xml");
Document document = saxReader.read(is);
//2.获取根元素
Element rootElement = document.getRootElement();
//3.获取所有的concat子元素
List contactList = rootElement.elements("contact");
//4.遍历子元素获取属性和值
List list=new ArrayList();
for (Element element : contactList) {
//不直接强转 直接解析成相关类型
Integer id =Integer.valueOf( element.attributeValue("id"));
Boolean vip =Boolean.valueOf( element.attributeValue("vip"));
//再回去子元素的文本内容
String name = element.elementTextTrim("name");
String gender = element.elementTextTrim("gender");
String email = element.elementTextTrim("email");
Contact contact=new Contact(id,name,vip,gender,email);
list.add(contact);
}
//5.输出 查看效果
for (Contact contact : list) {
System.out.println(contact);
}
}
}
3.3 输出 查看效果
四、总结
- SAXReader saxReader=new SAXReader(),这个类属于dom4j里面的,用于解析xml文件。
- 使用方法说明
| 方法 | 属于类 | 说明 |
|---|---|---|
| Element getRootElement() | Document | 获取根元素 |
| List | Element | 获取所有指定的子元素 |
| List | Element | 获取所有的子元素 |
| Element element(标签名) | Element | 获取指定的第一个子元素 |
| String elementText(标签名) | Element | 获取当前元素指定子元素的内容 |
| String getName() | Element | 获取标签名 |
| String getText() | Element | 获取元素的内容 |
| String attributeValue(String name) | Element | 获取元素指定属性名 |
子元素都是指一级子元素



