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); } }}