一、问题提出
现给出一contact.xml文件,文件中存有联系人的姓名、电话和性别。提出以下需求:
读取contact.xml文件的时候,将contact标签信息封装成Contact联系人对象,最终将联系人对象遍历出来。
contact.xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<!--使用xml文件来标签联系人,姓名 性别 电话-->
<contact-list>
<contact id="001">
<name>张三</name>
<phone>18292886805</phone>
<gender>男</gender>
</contact>
<contact id="002">
<name>李四</name>
<phone>18293689805</phone>
<gender>女</gender>
</contact>
<contact id="003">
<name>王五</name>
<phone>13659682305</phone>
<gender>女</gender>
</contact>
<contact id="004">
<name>赵六</name>
<phone>18965236355</phone>
<gender>女</gender>
</contact>
</contact-list>
二、问题分析
该问题的目的:xml文件---->List:arrayList,链表中的每个元素都是联系人对象。
List<Contact> Contact->name,phone,gender
三、具体步骤
1)读xml文件
2)获取所有的contact节点
3)遍历每个contact节点对象
4)获取其中的每个属性,并封装为Contact对象。
5)加入到List<Contact>中。
四、代码实现
package com.xunpu.xml.TestXml;
public class Contact {
private String name;
private String phone;
private String gender;
public Contact(String name,String phone,String gender){
this.name=name;
this.phone=phone;
this.gender=gender;
}
@Override
public String toString() {
return "Contact{" +
"name='" + name + '\'' +
", phone='" + phone + '\'' +
", gender='" + gender + '\'' +
'}';
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
package com.xunpu.xml.TestXml;
import org.dom4j.Attribute;
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;
//需求:读取contact.xml文件的时候,将contact标签信息封装成Contact联系人对象,最终将联系人对象遍历出来。
//目的:xml文件---->List:arrayList
// List<Contact> Contact->name,phone,gender
// 1)遍历每个contact节点
// 2)获取其中的每个属性,并封装为Contact对象
// 3)加入到List<Contact>中。
public class TestContact {
private static List<Contact> list=new ArrayList<Contact>();
public static void main(String[] args) throws DocumentException {
//1)读xml文件
Document doc=new SAXReader().read(TestContact.class.getClassLoader().getResource("contact.xml"));
//2)遍历每个contact节点
//获取所有的contact节点,返回一个链表,链表中的元素是contact节点对象
List<Element> conlist= doc.getRootElement().elements("contact");
//遍历每个contact标签
for(Element e:conlist){
// //获取所有的属性
// List<Attribute> attrlist=e.elements();
//获取所有的属性名和属性值
Element nameElem=e.element("name");
String name=nameElem.getText();
Element phoneElem=e.element("phone");
String phone=phoneElem.getText();
Element genderElem=e.element("gender");
String gender=genderElem.getText();
//将得到的值封装为一个对象
Contact contact=new Contact(name,phone,gender);
//将联系人加入到链表中
list.add(contact);
}
//遍历每个联系人
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}