Java中Dom4j解析XML
与利用DOM、SAX、JAXP机制来解析xml相比DOM4J表现更优秀,具有性能优异、功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml.dom4j是一套开源的api。实际项目中,往往选择dom4j来作为解析xml的利器。
sax解析: http://www.cnblogs.com/gavinYang/p/3505543.html
jdom解析: http://www.cnblogs.com/gavinYang/p/3505530.html
dom解析: http://www.cnblogs.com/gavinYang/p/3505523.html
1 package com.test; 2 3 import java.io.File; 4 import java.util.ArrayList; 5 import java.util.Iterator; 6 import java.util.List; 7 8 import org.dom4j.Document; 9 import org.dom4j.Element; 10 import org.dom4j.io.SAXReader; 11 12 public class Dom4jXML { 13 14 public static void main(String[] args) { 15 SAXReader saxReader = new SAXReader(); 16 File file = new File("e:/People.xml"); 17 18 try { 19 Document document = saxReader.read(file); 20 Element root = document.getRootElement(); 21 List<People> peoples = new ArrayList<People>(); 22 for (Iterator iterator = root.elementIterator(); iterator.hasNext();) { 23 People people = new People(); 24 Element peopleElement = (Element) iterator.next(); 25 people.setId(peopleElement.attribute("id").getValue()); 26 for (Iterator childIterator = peopleElement.elementIterator(); childIterator.hasNext();) { 27 Element childPeopleElement = (Element) childIterator.next(); 28 if (childPeopleElement.getName().equals("Name")) { 29 people.setEnglishName(childPeopleElement.attribute("en").getValue()); 30 people.setName(childPeopleElement.getText()); 31 } else if (childPeopleElement.getName().equals("Age")) { 32 people.setAge(childPeopleElement.getText()); 33 } 34 } 35 peoples.add(people); 36 } 37 38 for (People p : peoples) { 39 System.out.println(p.getId()+"\t"+p.getName()+"\t"+p.getEnglishName()+"\t"+p.getAge()); 40 } 41 42 } catch (Exception e) { 43 // TODO Auto-generated catch block 44 e.printStackTrace(); 45 } 46 47 } 48 }
People对象
1 package com.test; 2 3 public class People { 4 private String id; 5 private String name; 6 private String englishName; 7 private String age; 8 public String getId() { 9 return id; 10 } 11 public void setId(String id) { 12 this.id = id; 13 } 14 public String getName() { 15 return name; 16 } 17 public void setName(String name) { 18 this.name = name; 19 } 20 public String getEnglishName() { 21 return englishName; 22 } 23 public void setEnglishName(String englishName) { 24 this.englishName = englishName; 25 } 26 public String getAge() { 27 return age; 28 } 29 public void setAge(String age) { 30 this.age = age; 31 } 32 33 }
xml:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <PeopleList> 3 <People id="1"> 4 <Name en='zhangsan'>张三</Name> 5 <Age>20</Age> 6 </People> 7 <People id="2"> 8 <Name en='lisi'>李四</Name> 9 <Age>30</Age> 10 </People> 11 </PeopleList>