Hi this is a webservice that return a listo of travel packages:
<offerlist>
<id_o>154672521</id_o>
<Pax>04</Pax>
<FlightPackage>
<Type>Circle</Type>
<FlightSegment>
<Direction>Outbound</Direction>
<AvailabilityInfo>Available</AvailabilityInfo>
<Id>20180316|FCO|HAV|BV1554|Y|</Id>
<ProductType>ITC</ProductType>
<Source>PressTours</Source>
<AirlineCode>BV</AirlineCode>
<AirlineName>Blue Panorama</AirlineName>
<FlightNumber>BV1554</FlightNumber>
<DepartureAirportIataCode>FCO</DepartureAirportIataCode>
<ArrivalAirportIataCode>HAV</ArrivalAirportIataCode>
<StopAirportIataCode>CYO</StopAirportIataCode>
<DepartureDateTime>2018-03-16T08:00:00</DepartureDateTime>
<ArrivalDateTime>2018-03-16T16:35:00</ArrivalDateTime>
<ShamDateTime>false</ShamDateTime>
<CabinClass>Y</CabinClass>
<Warnings>
<Warning>
<Id>1</Id>
<Type>Critical</Type>
<Text>E' prevista una franchigia bagaglio etnica di 1 collo dal peso massimo di 32 kg per i passeggeri con passaporto cubano che viaggiano in classe Economica e di 2 colli dal peso massimo di 32kg cadauno per i passeggeri con passaporto cubano che viaggiano Comfort Class.</Text>
<StartingDate>2009-11-01T00:00:00</StartingDate>
<EndingDate>2100-01-01T00:00:00</EndingDate>
</Warning>
<Warning>
<Id>118</Id>
<Type>Critical</Type>
<Text>La richiesta impegnativa di posti eccedenti la nostra disponibilità pre-acquistata (puntino giallo), comporta un maggior costo in ragione della disponibilità di classe del vettore al momento della prenotazione. Il supplemento per la classe economy è di almeno € 35 per persona a tratta.</Text>
<StartingDate>1950-01-01T00:00:00</StartingDate>
<EndingDate>2050-12-31T00:00:00</EndingDate>
</Warning>
</Warnings>
</FlightSegment>
<FlightSegment>
<Direction>Inbound</Direction>
<AvailabilityInfo>Available</AvailabilityInfo>
<Id>20180329|HAV|FCO|NO0430.|Y|</Id>
<ProductType>ITC</ProductType>
<Source>PressTours</Source>
<AirlineCode>NO</AirlineCode>
<AirlineName>Neos</AirlineName>
<FlightNumber>NO0430.</FlightNumber>
<DepartureAirportIataCode>HAV</DepartureAirportIataCode>
<ArrivalAirportIataCode>FCO</ArrivalAirportIataCode>
<StopAirportIataCode>CUN</StopAirportIataCode>
<DepartureDateTime>2018-03-29T19:40:00</DepartureDateTime>
<ArrivalDateTime>2018-03-30T15:00:00</ArrivalDateTime>
<ShamDateTime>false</ShamDateTime>
<CabinClass>Y</CabinClass>
<Warnings>
<Warning>
<Id>118</Id>
<Type>Critical</Type>
<Text>La richiesta impegnativa di posti eccedenti la nostra disponibilità pre-acquistata (puntino giallo), comporta un maggior costo in ragione della disponibilità di classe del vettore al momento della prenotazione. Il supplemento per la classe economy è di almeno € 35 per persona a tratta.</Text>
<StartingDate>1950-01-01T00:00:00</StartingDate>
<EndingDate>2050-12-31T00:00:00</EndingDate>
</Warning>
<Warning>
<Id>2</Id>
<Type>Critical</Type>
<Text>E' prevista una franchigia bagaglio etnica di 40 kg. E' necessario fornire il numero di passaporto.</Text>
<StartingDate>2009-11-01T00:00:00</StartingDate>
<EndingDate>2100-01-01T00:00:00</EndingDate>
</Warning>
</Warnings>
</FlightSegment>
</FlightPackage>
<Dest>Cuba</Dest>
<Loc>Varadero</Loc>
<Struct>Memories Varadero Beach Resort 4 Stelle</Struct>
<idd>{b6a475f2-ef5e-4d9f-8cb7-a7d8dff43114}</idd>
<idl>{55251786-7e22-4684-89b4-7e708df5527e}</idl>
<ids>1VRASIRENIS</ids>
<S_type>Pack</S_type>
<Plan>AI</Plan>
<DptDate>2018-03-16T00:00:00</DptDate>
<days>15</days>
<nights>13</nights>
<dptapt>FCO</dptapt>
<price>1632.12</price>
<insur>160</insur>
<visatx>213.69</visatx>
<promo>: 0 € sul valore del volo e dell'hotel - Condizioni da Offerta Vacanze ai Caraibi!!!: 8,00% per persona a notte sul valore dell'hotel - Condizioni da Offerta</promo>
<scontoapplicato>3,45% pari a Euro 58,24</scontoapplicato>
<catoff>O</catoff>
<commoff>11</commoff>
<Status>M</Status>
<modDate>2018-02-27T00:21:41</modDate>
<av_from>0001-01-01T00:00:00</av_from>
<av_to>0001-01-01T00:00:00</av_to>
</offerlist>
i'm usign Larave to parse it from webservice $xml2 = simplexml_load_file($url)
. I need to check if flights node have at least one filght with status Available, the i can import package, else not. Can someone explaim me how i can count occurrences with a specific value appear in childs?
You could do it using an xpath expression:
/offerlist/FlightPackage/FlightSegment/AvailabilityInfo[text() = 'Available']
For example:
$items = $xml2->xpath("/offerlist/FlightPackage/FlightSegment/AvailabilityInfo[text() = 'Available']");
echo count($items);
That would give you 2 for the xml in the example.
If you have multiple offerlists you might do it like this.
First get all the //offerlist
and loop them getting the count:
$xml2 = simplexml_load_file("http://localhost/v1.xml");
$offerlists = $xml2->xpath("//offerlist");
foreach ($offerlists as $offerlist) {
echo sprintf("Offerlist with id: %s has %s times 'Available'.<br>",
$offerlist->id_o,
count($offerlist->xpath("./FlightPackage/FlightSegment/AvailabilityInfo[text() = 'Available']"))
);
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.