package com.banking.xc.utils.xml.flight; import java.io.InputStream; import java.util.ArrayList; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import android.text.TextUtils; import com.banking.xc.entity.FlightData; import com.banking.xc.entity.FlightRoute; import com.banking.xc.utils.Log; import com.banking.xc.utils.staticinfo.FlightAirLineUtil; import com.banking.xc.utils.staticinfo.FlightAirPortUtil; import com.banking.xc.utils.xml.frame.XmlParseHandler; import com.banking.xc.utils.xml.frame.XmlParseListener; public class FlightSearchXmlParseHandler extends XmlParseHandler{ ArrayList<FlightRoute> flightRouteList; FlightRoute flightRoute; ArrayList<FlightData> flightDataList; FlightData flightData; String preTag; FlightAirPortUtil util; public FlightSearchXmlParseHandler(XmlParseListener xmlParseListener, InputStream inputStream) { super(xmlParseListener, inputStream); } @Override public void startDocument() throws SAXException { if(util == null){ util = new FlightAirPortUtil(); util.initializeFlightAirport(); } super.startDocument(); } @Override public void cancelParse() { } @Override public void destroy() { flightRouteList = null; } @Override public Object getObjectWhenEnd() { return flightRouteList; } @Override public void characters(char[] ch, int start, int length) throws SAXException { super.characters(ch, start, length); final String data = new String(ch, start, length); if(TextUtils.equals(preTag, "RecordCount")){ flightRoute.setRecordCount(data); return; } if(TextUtils.equals(preTag, "DepartCityCode")){ flightData.setDepartCityCode(data); return; } if(TextUtils.equals(preTag, "ArriveCityCode")){ flightData.setArriveCityCode(data); return; } if(TextUtils.equals(preTag, "DPortCode")){//"DepartAirportCode" flightData.setDepartAirportCode(data); if(Log.D){ Log.d("","DPortCode"+data); } flightData.setDepartAirportName(util.getNameByThree(data)); //flightData.setDepartAirportString(departAirportString) return; } if(TextUtils.equals(preTag, "APortCode")){ flightData.setArriveAirportCode(data); flightData.setArriveAirportName(util.getNameByThree(data)); return; } if(TextUtils.equals(preTag, "TakeOffTime")){ flightData.setTakeOffTime(data); final String[] datas = data.split("T"); if(datas.length>1){ flightData.setNoDateDepartTime(datas[1]); } return; } if(TextUtils.equals(preTag, "ArriveTime")){ flightData.setArriveTime(data); final String[] datas = data.split("T"); if(datas.length>1){ flightData.setNoDateArriveTime(datas[1]); } return; } if(TextUtils.equals(preTag, "Flight")){ flightData.setFlight(data); return; } if(TextUtils.equals(preTag, "CraftType")){ flightData.setCraftType(data); return; } if(TextUtils.equals(preTag, "AirlineCode")){//AirlineDibitCode flightData.setAirlineDibitCode(data); return; } if(TextUtils.equals(preTag, "Price")){ flightData.setPrice(data); return; } if(TextUtils.equals(preTag, "Rate")){ flightData.setRate(data); return; } if(TextUtils.equals(preTag, "StandardPrice")){ flightData.setStandardPrice(data); return; } if(TextUtils.equals(preTag, "ChildStandardPrice")){ flightData.setChildStandardPrice(data); return; } if(TextUtils.equals(preTag, "BabyStandardPrice")){ flightData.setBabyStandardPrice(data); return; } if(TextUtils.equals(preTag, "MealType")){ flightData.setMealType(data); return; } if(TextUtils.equals(preTag, "AdultTax")){ flightData.setAdultTax(data); return; } if(TextUtils.equals(preTag, "ChildTax")){ flightData.setChildTax(data); return; } if(TextUtils.equals(preTag, "BabyTax")){ flightData.setBabyTax(data); return; } if(TextUtils.equals(preTag, "AdultOilFee")){ flightData.setAdultOilFee(data); return; } if(TextUtils.equals(preTag, "ChildOilFee")){ flightData.setChildOilFee(data); return; } if(TextUtils.equals(preTag, "BabyOilFee")){ flightData.setBabyOilFee(data); return; } if(TextUtils.equals(preTag, "StopTimes")){ flightData.setStopTimes(data); return; } if(TextUtils.equals(preTag, "Nonrer")){ flightData.setNonrer(data); return; } if(TextUtils.equals(preTag, "Nonend")){ flightData.setNonend(data); return; } if(TextUtils.equals(preTag, "Nonref")){ flightData.setNonref(data); return; } if(TextUtils.equals(preTag, "Rernote")){ flightData.setRefNote(data); return; } if(TextUtils.equals(preTag, "Remarks")){ flightData.setRemarks(data); return; } if(TextUtils.equals(preTag, "Endnote")){ flightData.setEndNote(data); return; } if(TextUtils.equals(preTag, "Refnote")){ flightData.setRefNote(data); return; } if(TextUtils.equals(preTag, "BeforeFlyDate")){ flightData.setBeforeFlyDate(data); return; } if(TextUtils.equals(preTag, "Quantity")){ flightData.setQuantity(data); return; } if(TextUtils.equals(preTag, "PriceType")){ flightData.setPriceType(data); return; } if(TextUtils.equals(preTag, "ProductType")){ flightData.setProductType(data); return; } if(TextUtils.equals(preTag, "ProductSource")){ flightData.setProductSource(data); return; } if(TextUtils.equals(preTag, "Recommend")){ flightData.setRecommend(data); return; } /*if(TextUtils.equals(preTag, "OnlyOwnCity")){ flightData.setOnlyOwnCity(data); return; }*/ if(TextUtils.equals(preTag, "IsLowestPrice")){ flightData.setIsLowestPrice(data); return; } if(TextUtils.equals(preTag, "IsLowestCZSpecialPrice")){ flightData.setIsLowestCZSpecialPrice(data); return; } if(TextUtils.equals(preTag, "OutOfPostTime")){ flightData.setOutOfPostTime(data); return; } if(TextUtils.equals(preTag, "OutOfSendGetTime")){ flightData.setOutOfSendGetTime(data); return; } if(TextUtils.equals(preTag, "OutOfAirlineCounterTime")){ flightData.setOutOfAirlineCounterTime(data); return; } if(TextUtils.equals(preTag, "CanPost")){ flightData.setCanPost(data); return; } if(TextUtils.equals(preTag, "CanAirlineCounter")){ flightData.setCanAirlineCounter(data); return; } if(TextUtils.equals(preTag, "CanSendGet")){ flightData.setCanSendGet(data); return; } if(TextUtils.equals(preTag, "CanUpGrade")){ flightData.setCanUpGrade(data); return; } if(TextUtils.equals(preTag, "RouteIndex")){ flightData.setRouteIndex(data); return; } } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { super.startElement(uri, localName, qName, attributes); if(TextUtils.equals("FlightRoutes", localName)){ flightRouteList = new ArrayList<FlightRoute>(); } if(TextUtils.equals("DomesticFlightRoute", localName)){ flightRoute = new FlightRoute(); } if(TextUtils.equals("FlightsList", localName)){ flightDataList = new ArrayList<FlightData>(); } if(TextUtils.equals("DomesticFlightData", localName)){ flightData = new FlightData(); } preTag = localName; } @Override public void endElement(String uri, String localName, String qName) throws SAXException { // TODO Auto-generated method stub super.endElement(uri, localName, qName); if(TextUtils.equals("DomesticFlightRoute", localName)){ flightRouteList.add(flightRoute); flightRoute = null; } if(TextUtils.equals("FlightsList", localName)){ flightRoute.setFlightDataList(flightDataList); flightDataList = null; } if(TextUtils.equals("DomesticFlightData", localName)){ flightDataList.add(flightData); flightData = null; } } }