您的位置:首页 > 编程语言 > Java开发

java解析xml---之---dom4j解析xml文件2

2014-11-10 14:13 323 查看
通过dom4j的api文档来解析xml。dom4j是一套开源的api。实际项目中,往往选择dom4j来作为解析xml的利器。

1、建项目。2、导入dom4j的jar包。点击下载。3、编写代码。

解析过程如下:

package com.test.service;

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

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

/**
* @Description: 解析xml文件
* @author *****
* @date 2014年11月10日
* @version V1.0
*/
public class XmlParser {
@SuppressWarnings("unchecked")
public List readStringXml() {
List as = new ArrayList();
List flightList = new ArrayList();
List cabinList = new ArrayList();
try {
// 读取并解析XML文档
// SAXReader就是一个管道,用一个流的方式,把xml文件读出来
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("planeInfo.xml"));
// 获取根节点
Element rootElt = doc.getRootElement();
// 拿到根节点的名称
System.out.println("根节点:" + rootElt.getName());
String result_code = rootElt.elementText("result_code");
String success = rootElt.elementText("success");
String sign = rootElt.elementText("sign");
System.out.println("code: " + result_code + " success: " + success
+ " sign: " + sign);
// 获取根节点下的子节点flightInfos
// Iterator iter1 = rootElt.elementIterator("flightInfos");
Element flightInfos = rootElt.element("flightInfos");
Iterator iter1 = flightInfos.elementIterator("flightInfo");
// 遍历flightInfos节点
while (iter1.hasNext()) {
Element recordEle = (Element) iter1.next();

String airline = recordEle.elementText("airline");
String airportTax = recordEle.elementText("airportTax");
String arrival = recordEle.elementText("arrival");
String arrivalTime = recordEle.elementText("arrivalTime");
String costFare = recordEle.elementText("costFare");
String departure = recordEle.elementText("departure");
String departureTime = recordEle.elementText("departureTime");
String flightNo = recordEle.elementText("flightNo");
String fuelTax = recordEle.elementText("fuelTax");
String isCodeShare = recordEle.elementText("isCodeShare");
String isFood = recordEle.elementText("isFood");
String planeType = recordEle.elementText("planeType");
String priceFare = recordEle.elementText("priceFare");
String stopNo = recordEle.elementText("stopNo");

System.out.println(recordEle.element("airline").getName()
+ ": " + recordEle.elementText("airline"));
System.out.println(recordEle.element("airportTax").getName()
+ ": " + recordEle.elementText("airportTax"));
System.out.println(recordEle.element("arrival").getName()
+ ": " + recordEle.elementText("arrival"));
System.out.println(recordEle.element("arrivalTime").getName()
+ ": " + recordEle.elementText("arrivalTime"));
System.out.println(recordEle.element("costFare").getName()
+ ": " + recordEle.elementText("costFare"));
System.out.println(recordEle.element("departure").getName()
+ ": " + recordEle.elementText("departure"));
System.out.println(recordEle.element("departureTime").getName()
+ ": " + recordEle.elementText("departureTime"));
System.out.println(recordEle.element("flightNo").getName()
+ ": " + recordEle.elementText("flightNo"));
System.out.println(recordEle.element("fuelTax").getName()
+ ": " + recordEle.elementText("fuelTax"));
System.out.println(recordEle.element("isCodeShare").getName()
+ ": " + recordEle.elementText("isCodeShare"));
System.out.println(recordEle.element("isFood").getName() + ": "
+ recordEle.elementText("isFood"));
System.out.println(recordEle.element("planeType").getName()
+ ": " + recordEle.elementText("planeType"));
System.out.println(recordEle.element("priceFare").getName()
+ ": " + recordEle.elementText("priceFare"));
System.out.println(recordEle.element("stopNo").getName() + ": "
+ recordEle.elementText("stopNo"));

flightList.add(airline);
flightList.add(airportTax);
flightList.add(arrival);
flightList.add(arrivalTime);
flightList.add(costFare);
flightList.add(departure);
flightList.add(departureTime);
flightList.add(flightNo);
flightList.add(fuelTax);
flightList.add(isCodeShare);
flightList.add(isFood);
flightList.add(planeType);
flightList.add(priceFare);
flightList.add(stopNo);

Iterator iter2 = recordEle.element("cabinInfos")
.elementIterator();
// 遍历flightInfo节点
while (iter2.hasNext()) {
Element itemEle = (Element) iter2.next();

String airportFee = itemEle.elementTextTrim("airportFee");
String baseCabin = itemEle.elementTextTrim("baseCabin");
String cabinInfo = itemEle.elementTextTrim("cabinInfo");
String cabinName = itemEle.elementTextTrim("cabinName");
String cost = itemEle.elementTextTrim("cost");
String discountRate = itemEle
.elementTextTrim("discountRate");
String fare = itemEle.elementTextTrim("fare");
String oilFee = itemEle.elementTextTrim("oilFee");
String policyCode = itemEle.elementTextTrim("policyCode");

System.out.println("airportFee: " + airportFee);
System.out.println("baseCabin: " + baseCabin);
System.out.println("cabinInfo: " + cabinInfo);
System.out.println("cabinName: " + cabinName);
System.out.println("cost: " + cost);
System.out.println("discountRate: " + discountRate);
System.out.println("fare: " + fare);
System.out.println("oilFee: " + oilFee);
System.out.println("policyCode: " + policyCode);

cabinList.add(airportFee);
cabinList.add(baseCabin);
cabinList.add(cabinInfo);
cabinList.add(cabinName);
cabinList.add(cost);
cabinList.add(discountRate);
cabinList.add(fare);
cabinList.add(oilFee);
cabinList.add(policyCode);

}
}
as.add(flightList);
as.add(cabinList);

} catch (DocumentException e) {
e.printStackTrace();

} catch (Exception e) {
e.printStackTrace();

}
return as;
}

@SuppressWarnings("unchecked")
public static void main(String[] args) {

List retAsList = new XmlParser().readStringXml();
List list1 = (List) retAsList.get(0);

for (Iterator iterator1 = list1.iterator(); iterator1.hasNext();) {
String value = (String) iterator1.next();
System.out.println(value);
}

/*
* List list2 = (List) retAsList.get(1); for(Iterator iterator2 =
* list2.iterator();iterator2.hasNext();){ String value = (String)
* iterator2.next();
*
* System.out.println(value); }
*/
}
}


解析的xml文件如下:

<?xml version="1.0" encoding="GB2312"?>
<linkea_jipiao_get_response>
<result_code>200</result_code>
<success>true</success>
<flightInfos>
<flightInfo>
<airline>MF8577</airline>
<airportTax>50</airportTax>
<arrival>PVG</arrival>
<arrivalTime>2014-11-07 10:45</arrivalTime>
<cabinInfos>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>C</baseCabin>
<cabinInfo>8</cabinInfo>
<cabinName>J</cabinName>
<cost>0.0</cost>
<discountRate>251</discountRate>
<fare>2280.0</fare>
<oilFee>70.0</oilFee>
<policyCode>公务舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>Y</cabinName>
<cost>0.0</cost>
<discountRate>100</discountRate>
<fare>910.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>B</cabinName>
<cost>0.0</cost>
<discountRate>90</discountRate>
<fare>820.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>M</cabinName>
<cost>0.0</cost>
<discountRate>80</discountRate>
<fare>730.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>L</cabinName>
<cost>0.0</cost>
<discountRate>75</discountRate>
<fare>680.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>K</cabinName>
<cost>0.0</cost>
<discountRate>70</discountRate>
<fare>640.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>N</cabinName>
<cost>0.0</cost>
<discountRate>65</discountRate>
<fare>590.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>Q</cabinName>
<cost>0.0</cost>
<discountRate>60</discountRate>
<fare>550.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
</cabinInfos>
<costFare>910.0</costFare>
<departure>JJN</departure>
<departureTime>2014-11-07 09:30</departureTime>
<flightNo>MF8577</flightNo>
<fuelTax>70</fuelTax>
<isCodeShare>0</isCodeShare>
<isFood>1</isFood>
<planeType>738</planeType>
<priceFare>550.0</priceFare>
<stopNo>0</stopNo>
</flightInfo>
<flightInfo>
<airline>PN6307</airline>
<airportTax>50</airportTax>
<arrival>PVG</arrival>
<arrivalTime>2014-11-07 11:55</arrivalTime>
<cabinInfos>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>Y</cabinName>
<cost>0.0</cost>
<discountRate>100</discountRate>
<fare>910.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>B</cabinName>
<cost>0.0</cost>
<discountRate>90</discountRate>
<fare>820.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>H</cabinName>
<cost>0.0</cost>
<discountRate>82</discountRate>
<fare>750.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>K</cabinName>
<cost>0.0</cost>
<discountRate>74</discountRate>
<fare>670.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>L</cabinName>
<cost>0.0</cost>
<discountRate>67</discountRate>
<fare>610.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>M</cabinName>
<cost>0.0</cost>
<discountRate>62</discountRate>
<fare>560.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>R</cabinName>
<cost>0.0</cost>
<discountRate>55</discountRate>
<fare>500.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>Q</cabinName>
<cost>0.0</cost>
<discountRate>51</discountRate>
<fare>460.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>D</cabinName>
<cost>0.0</cost>
<discountRate>45</discountRate>
<fare>410.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
</cabinInfos>
<costFare>910.0</costFare>
<departure>JJN</departure>
<departureTime>2014-11-07 10:30</departureTime>
<flightNo>PN6307</flightNo>
<fuelTax>70</fuelTax>
<isCodeShare>0</isCodeShare>
<isFood>1</isFood>
<planeType>320</planeType>
<priceFare>250.0</priceFare>
<stopNo>0</stopNo>
</flightInfo>
<flightInfo>
<airline>ZH9907</airline>
<airportTax>50</airportTax>
<arrival>PVG</arrival>
<arrivalTime>2014-11-07 15:45</arrivalTime>
<cabinInfos>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>F</baseCabin>
<cabinInfo>4</cabinInfo>
<cabinName>F</cabinName>
<cost>0.0</cost>
<discountRate>251</discountRate>
<fare>2280.0</fare>
<oilFee>70.0</oilFee>
<policyCode>头等舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>Y</cabinName>
<cost>0.0</cost>
<discountRate>100</discountRate>
<fare>910.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
</cabinInfos>
<costFare>910.0</costFare>
<departure>JJN</departure>
<departureTime>2014-11-07 14:10</departureTime>
<flightNo>ZH9907</flightNo>
<fuelTax>70</fuelTax>
<isCodeShare>0</isCodeShare>
<isFood>1</isFood>
<planeType>320</planeType>
<priceFare>910.0</priceFare>
<stopNo>0</stopNo>
</flightInfo>
<flightInfo>
<airline>MF8513</airline>
<airportTax>50</airportTax>
<arrival>PVG</arrival>
<arrivalTime>2014-11-07 17:55</arrivalTime>
<cabinInfos>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>C</baseCabin>
<cabinInfo>8</cabinInfo>
<cabinName>J</cabinName>
<cost>0.0</cost>
<discountRate>251</discountRate>
<fare>2280.0</fare>
<oilFee>70.0</oilFee>
<policyCode>公务舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>Y</cabinName>
<cost>0.0</cost>
<discountRate>100</discountRate>
<fare>910.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>B</cabinName>
<cost>0.0</cost>
<discountRate>90</discountRate>
<fare>820.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>M</cabinName>
<cost>0.0</cost>
<discountRate>80</discountRate>
<fare>730.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>L</cabinName>
<cost>0.0</cost>
<discountRate>75</discountRate>
<fare>680.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>K</cabinName>
<cost>0.0</cost>
<discountRate>70</discountRate>
<fare>640.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>N</cabinName>
<cost>0.0</cost>
<discountRate>65</discountRate>
<fare>590.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>Q</cabinName>
<cost>0.0</cost>
<discountRate>60</discountRate>
<fare>550.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
<cabinInfo>
<airportFee>50.0</airportFee>
<baseCabin>Y</baseCabin>
<cabinInfo>A</cabinInfo>
<cabinName>V</cabinName>
<cost>0.0</cost>
<discountRate>51</discountRate>
<fare>460.0</fare>
<oilFee>70.0</oilFee>
<policyCode>经济舱</policyCode>
</cabinInfo>
</cabinInfos>
<costFare>910.0</costFare>
<departure>JJN</departure>
<departureTime>2014-11-07 16:30</departureTime>
<flightNo>MF8513</flightNo>
<fuelTax>70</fuelTax>
<isCodeShare>0</isCodeShare>
<isFood>0</isFood>
<planeType>738</planeType>
<priceFare>360.0</priceFare>
<stopNo>0</stopNo>
</flightInfo>
</flightInfos>
<sign>B6BAB3874208D20F3D37F658D3BB4146</sign>
</linkea_jipiao_get_response>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: