DOM4J解析XML文件

DOM4J

基于树形结构,第三方组件,效率更高,使用的Java中的迭代器实现数据读取,在web框架中使用较多(Hibernate)。

代码示例

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class DOM4JXmlDemo {
@Test
public void dom4jXmlParse() throws DocumentException {
//1. 创建DOM4J解析器对象
SAXReader reader = new SAXReader();
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("xml/person.xml");

Document doc = reader.read(is);
Element rootElement = doc.getRootElement();
Iterator iter1 = rootElement.elementIterator();

List persons = new ArrayList<>();
Person person = null;

while (iter1.hasNext()) {
person = new Person();
Element element = iter1.next();
person.setPersonId(element.attributeValue("personId"));

Iterator iter2 = element.elementIterator();
while (iter2.hasNext()) {
Element next = iter2.next();
String tag = next.getName();
if ("name".equals(tag)) {
person.setName(next.getText());
} else if ("address".equals(tag)) {
person.setAddress(next.getText());
} else if ("tel".equals(tag)) {
person.setTel(next.getText());
} else if ("fax".equals(tag)) {
person.setFax(next.getText());
} else if ("email".equals(tag)) {
person.setEmail(next.getText());
}
}
persons.add(person);
}
for (Person p : persons) {
System.out.println(p);
}
}
}

person.xml文件内容



Tony Blair

10 Download Street,London UK

010-2586984
010-4567787
blair@everywhere.com


Json

10 Download Street,New York US

010-2586484
010-4872127
json@everywhere.com

posted on 2019-05-28 21:26  行之间  阅读(1446)  评论(0)    收藏  举报