Dom4j工具j解析XML原理和示例代码
import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; /** * 把xml文档信息封装到对象中 * */ public class Demo { public static void main(String[] args) throws Exception{ List<Contact> list = new ArrayList<Contact>(); //读取xml,封装对象 SAXReader reader = new SAXReader(); Document doc = reader.read(new File("./src/contact.xml")); //读取contact标签 Iterator<Element> it = doc.getRootElement().elementIterator("contact"); while(it.hasNext()){ Element elem = it.next(); //创建Contact Contact contact = new Contact(); contact.setId(elem.attributeValue("id")); contact.setName(elem.elementText("name")); contact.setAge(elem.elementText("age")); contact.setPhone(elem.elementText("phone")); contact.setEmail(elem.elementText("email")); contact.setQq(elem.elementText("qq")); list.add(contact); } for (Contact contact : list) { System.out.println(contact); } } }
contact.xml
<?xml version="1.0" encoding="utf-8"?> <contactList> <contact id="001"> <name>张三</name> <age>20</age> <phone>134222223333</phone> <email>zhangsan@qq.com</email> <qq>432221111</qq> </contact> <contact id="002"> <name>李四</name> <age>20</age> <phone>134222225555</phone> <email>lisi@qq.com</email> <qq>432222222</qq> </contact> </contactList>
运行日志如下:
Contact [age=20, email=zhangsan@qq.com, id=001, name=张三, phone=134222223333, qq=432221111]
Contact [age=20, email=lisi@qq.com, id=002, name=李四, phone=134222225555, qq=432222222]
原理:
读取xml文档: Document doc = new SAXReader().read("xml文件"); 节点: nodeIterator(); 所有节点 标签: element("名称") 指定名称的第一个子标签对象 elementIterator("名称"); 指定名称的所有子标签对象 elements(); 所有子标签对象 属性: attributeValue(“名称”) 指定名称的属性值 attribute("名称") 指定名称的属性对象 getName() 属性名称 getValue() 属性值 atributeIterator() 所有属性对象(Iterator) attributes() 所有属性对象(List) 文本: getText() 得到当前标签的文本 elementText("子标签名称") 得到子标签的文本
最后,关注【码上加油站】微信公众号后,有疑惑有问题想加油的小伙伴可以码上加入社群,让我们一起码上加油吧!!!