1,解析的使用步骤范例:
a,xml文件:
//xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<contactList>
<contact id="1" vip="true">
<name>潘金莲</name>
<gender>女</gender>
<email>panpan@itcast.cn</email>
</contact>
<!-- id 和 vip 是属性名 -->
<contact id="2" vip="false">
<!-- 在属性下面的是子元素名:name ,被子元素包括的是子元素文本 -->
<name>武松</name>
<gender id="1000">男</gender>
<email>wusong@itcast.cn</email>
</contact>
<contact id="3">
<name>武大狼</name>
<gender>男</gender>
<email>wuda@itcast.cn</email>
</contact>
<message>
<name>小王</name>
</message>
<name>老王</name>
</contactList>
b,Contcact属性定义类:
/**
* @author Jztice5
* @date 2022年02月25日 上午 11:05
*/
public class Contcact {
private int id;
private boolean vip;
private String name;
private String gender;
private String email;
public Contcact () {
}
public Contcact (int id, boolean vip, String name, String gender, String email) {
this.id = id;
this.vip = vip;
this.name = name;
this.gender = gender;
this.email = email;
}
/**
* 获取
* @return id
*/
public int getId () {
return id;
}
/**
* 设置
* @param id
*/
public void setId (int id) {
this.id = id;
}
/**
* 获取
* @return vip
*/
public boolean isVip () {
return vip;
}
/**
* 设置
* @param vip
*/
public void setVip (boolean vip) {
this.vip = vip;
}
/**
* 获取
* @return name
*/
public String getName () {
return name;
}
/**
* 设置
* @param name
*/
public void setName (String name) {
this.name = name;
}
/**
* 获取
* @return gender
*/
public String getGender () {
return gender;
}
/**
* 设置
* @param gender
*/
public void setGender (String gender) {
this.gender = gender;
}
/**
* 获取
* @return email
*/
public String getEmail () {
return email;
}
/**
* 设置
* @param email
*/
public void setEmail (String email) {
this.email = email;
}
@Override
public String toString () {
return "Contcact{" +
"id=" + id +
", vip=" + vip +
", name='" + name + '\'' +
", gender='" + gender + '\'' +
", email='" + email + '\'' +
'}';
}
}
c,main方法类:
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.util.ArrayList;
import java.util.List;
/**
* @author Jztice5
* @date 2022年02月25日 上午 11:08
*/
public class Text01 {
public static void main (String[] args) throws DocumentException {
//1,创建解析器
SAXReader saxReader = new SAXReader();
//2,使用解析器解析xml
Document read = saxReader.read("day14_A\\XML\\Contact.xml");
//3,获取根元素
Element rootElement = read.getRootElement();
//获取根元素的名字
String name = rootElement.getName();
System.out.println(name);
//获取一个指定名字的子元素
Element contact = rootElement.element("contact");
//获取根元素下的所有子元素
List <Element> elementlists = rootElement.elements("contact");
//创建保存的集合
ArrayList <Contcact> list = new ArrayList <>();
//遍历所有子元素
for (Element element : elementlists) {
//输出子元素的名字
System.out.println(element.getName());
//通过属性名获取对应的属性值;attributeValue
String idStr = element.attributeValue("id");
int id = Integer.parseInt(idStr);
String vipStr = element.attributeValue("vip");
boolean vip = Boolean.parseBoolean(vipStr);
//通过子元素名获取子元素的文本;elementText
String name1 = element.elementText("name");
String gender = element.elementText("gender");
String email = element.elementText("email");
//将获取到的数据存进对象
Contcact c = new Contcact(id, vip, name1, gender, email);
//再把对象添加到list集合
list.add(c);
}
//用的时候直接在集合拿就行了
for (Contcact contcact : list) {
System.out.println(contcact);
}
}
}