XML解析案例
需求:利用Dom4J的知识,将Contact.xml文件中的联系人数据封装成List集合,
其中每个元素是实体类Contact。打印输出 List 中的每个元素。
<?xml version="1.0" encoding="UTF-8"?>
<contactList>
<contact id="1" vip="true">
<name> 潘金莲 </name>
<gender>女</gender>
<email>panpan@itcast.cn</email>
</contact>
<contact id="2" vip="false">
<name>武松</name>
<gender>男</gender>
<email>wusong@itcast.cn</email>
</contact>
<contact id="3" vip="false">
<name>武大狼</name>
<gender>男</gender>
<email>wuda@itcast.cn</email>
</contact>
<user>
</user>
</contactList>
----------
public class Contact { //将读取到的数据存入Contact类
private String name;
private int id;
private boolean vip;
private char gender;
private String email;
构造器
toString
get Set
}
------------
核心代码
public class Dom4JTest2 {
public static void main(String[] args) throws Exception{
ArrayList<Contact> elements = new ArrayList<>();//用来储存Contact对象
//解析XML文件
SAXReader saxReader = new SAXReader();
InputStream is = saxReader.getClass().getResourceAsStream("/Contacts.xml");
Document document = saxReader.read(is);
//先拿根元素
Element root = document.getRootElement();
List<Element> list = root.elements("contact");
//通过根元素依次遍历一下每个子元素
for (Element element :list) {
elements.add(new Contact(element.elementTextTrim("name"),
Integer.valueOf(element.attributeValue("id")),
Boolean.valueOf(element.attributeValue("vip")),
element.elementTextTrim("gender").charAt(0),
element.elementText("email")));
}
//System.out.println(elements);
//10遍历List集合
for (Contact contact :elements) {
System.out.println(contact);
}
}
}