XML文檔:
<?xml version="1.0" encoding="UTF-8"?>
<聯繫人列表 公司="A集團">
<聯繫人>
<姓名>張三</姓名>
<公司>A公司</公司>
<電話>(021)5555666</電話>
<地址>
<街道>5街</街道>
<城市>上海市</城市>
<省份>上海</省份>
</地址>
</聯繫人>
<聯繫人>
<姓名>王三</姓名>
<公司>B公司</公司>
<電話>(021)5555777</電話>
<地址>
<街道>87街</街道>
<城市>上海市</城市>
<省份>上海</省份>
</地址>
</聯繫人>
<聯繫人>
<姓名>李四</姓名>
<公司>C公司</公司>
<電話>(021)5555888</電話>
<地址>
<街道>67街</街道>
<城市>上海市</城市>
<省份>上海</省份>
</地址>
</聯繫人>
</聯繫人列表>
java利用dom4j實現解析:
package com.xml.dom4j;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class companylist {
public static void main(String[] args) throws Exception {
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("companylist.xml"));
Element root = doc.getRootElement();
System.out.println("根元素爲:" + root.getName());
Element next = root.element("聯繫人");//需要指定次元素
parsePerson(root,next);
}
public static void parsePerson(Element root,Element next) {
List personList = next.elements();
checkSubElement(next,personList,false);
System.out.println("====================================");
for (Iterator pasi = root.elementIterator(); pasi.hasNext();) {
Element lucy = (Element) pasi.next();
for (Iterator noya = lucy.elementIterator(); noya.hasNext();) {
Element pagy = (Element) noya.next();
if (pagy.isTextOnly()) {
System.out.println(lucy.getName() + "-" + pagy.getName()
+ "-" + pagy.getData());
}
List elementList = pagy.elements();
checkSubElement(pagy,elementList,true);//檢查是否有子元素
}
System.out.println("====================================");
}
}
public static void checkSubElement(Element currect,List list,boolean choose)//檢查是否有子元素的方法
{
System.out.println(currect.getName() + "子元素個數:"
+ list.size()+"\n");
if (list.size() > 0 && choose==true) { //如果有子元素,並且選擇開關開啓,纔會進行解析
for (int j = 0; j < list.size(); j++) {
Element r = (Element) list.get(j);
System.out.println("-"
+ currect.getName() + "-" + r.getName() + "-"
+ r.getText());
}
}
}
}