XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。
本文将介绍使用dom4j解析xml文件:
xml样例:
<?xml version="1.0" encoding="gb2312"?>
<Flight>
<FlightDate>2010-2-5</FlightDate>
<FlightNote>成功</FlightNote>
<FlightNullCode>0</FlightNullCode>
<FlightInfo>
<FlightCompany>北京航空公司</FlightCompany>
<FlightNo>SC4919</FlightNo>
<FlightDepcode>HFE</FlightDepcode>
<FlightArrcode>KWE</FlightArrcode>
<FlightDep>合肥</FlightDep>
<FlightArr>贵阳</FlightArr>
<FlightDeptimeReady>17:20</FlightDeptimeReady>
<FlightArrtimeReady>19:20</FlightArrtimeReady>
<FlightDeptime>false</FlightDeptime>
<FlightArrtime>false</FlightArrtime>
<FlightState>计划</FlightState>
<FlightTerminal>false</FlightTerminal>
<FlightHTerminal>false</FlightHTerminal>
</FlightInfo>
</Flight>
解析代码:
1):获取服务端xml文件
public static final Document getXML(String url) {
Document document = null;
SAXReader saxReader = new SAXReader();
document = saxReader.read(url); //读取XML文件,获得document对象
return document;
}
2) :解析xml文件
public static final Map<String, String> getXMLContent(String url) {
Map<String, String> map= new HashMap<String, String>();
Document document = getXML(url);
Element root = document.getRootElement();
Iterator<Element> elementItor = root.elementIterator();
while (elementItor.hasNext()) {
Element e1 = elementItor.next();
Iterator<Element> FlightInfoItor = e1.elementIterator();
while (FlightInfoItor.hasNext()) {
Element e2 = FlightInfoItor.next();
map.put(e2.getName(), e2.getText());
}
}
return map;
}
注意:如果xml文件中存在多个 <FlightInfo>节点,而且只需要该节点下的内容,代码如下:
public static final List<Map<String, String>> getXMLContent(String url) {
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Document document = getXML(url);
Element root = document.getRootElement();
Iterator<Element> elementItor = root.elementIterator();
while (elementItor.hasNext()) {
Element e1 = elementItor.next();
if (!e1.getName().equalsIgnoreCase("FlightInfo")) {
continue;
}
Iterator<Element> FlightInfoItor = e1.elementIterator();
Map<String, String> map = new HashMap<String, String>();
while (FlightInfoItor.hasNext()) {
Element e2 = FlightInfoItor.next();
map.put(e2.getName(), e2.getText());
}
list.add(map);
}
return list;
}
温馨提示 :使用dom4j解析xml需要dom4j.jar 下载链接