现在的位置: 首页 > 综合 > 正文

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

2018年03月31日 ⁄ 综合 ⁄ 共 14097字 ⁄ 字号 评论关闭

通过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>

抱歉!评论已关闭.