java解析xml---之---dom4j解析xml文件2
2014-11-10 14:13
323 查看
通过dom4j的api文档来解析xml。dom4j是一套开源的api。实际项目中,往往选择dom4j来作为解析xml的利器。
1、建项目。2、导入dom4j的jar包。点击下载。3、编写代码。
解析过程如下:
解析的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>
相关文章推荐
- java通过dom4j解析xml文件
- Java进阶(二十七)使用Dom4j解析XML文件
- java之XML文件的解析方法Dom4j
- java基础-使用dom4j解析XML文件
- java-web 之 第二讲 -- dom4j 解析 XML 文件
- 在Java中使用dom4j来解析及生成xml文件
- Java dom4j解析RESTFull风格发布的WebService的xml文件
- Java之xml文件解析四(DOM4J方式解析xml文件)
- Java自定义生成与解析(Dom4J)XML文件
- java解析xml---之---dom4j解析xml文件
- Java进阶(二十七)使用Dom4j解析XML文件
- java 生成 解析XML 文件 Dom4J
- Java dom4j解析RESTFull风格发布的WebService的xml文件
- JAVA代码-使用DOM4J解析复杂XML文件
- java中采用dom4j解析xml文件
- java 利用dom4j 解析XML文件
- Java dom4j解析RESTFull风格发布的WebService的xml文件
- java使用dom4j解析xml文件
- java中使用Dom4j的xPath解析xml文件