Добрый день.. Подскажите.. имеется xml фаил формата: PHP: <AirAvailabilityResults size="99"> <AirAvailabilityReply> <supplierType> S </supplierType> <RateInfo> <nativeBaseFare> 907.0 </nativeBaseFare> <nativeTotalPrice> 930.1 </nativeTotalPrice> <nativeCurrencyCode> USD </nativeCurrencyCode> <displayBaseFare> 907.0 </displayBaseFare> <displayTotalPrice> 930.1 </displayTotalPrice> <displayCurrencyCode> USD </displayCurrencyCode> </RateInfo> <FlightSegment> <segmentOutgoing> true </segmentOutgoing> <airlineCode> EK </airlineCode> <airline> EMIRATES AIRLINES </airline> <flightNumber> 132 </flightNumber> <originCityCode> DME </originCityCode> <destinationCityCode> DXB </destinationCityCode> <departureDateTime> 02/19/2012 1:05 AM </departureDateTime> <arrivalDateTime> 02/19/2012 6:20 AM </arrivalDateTime> <fareClass> X </fareClass> <equipmentCode> 77W </equipmentCode> <numberOfStops> 0 </numberOfStops> <originCity> Moscow </originCity> <originStateProvince/> <originCountry> RU </originCountry> <destinationCity> Dubai </destinationCity> <desintationStateProvince/> <destinationCountry> AE </destinationCountry> </FlightSegment> <FlightSegment> <segmentOutgoing> true </segmentOutgoing> <airlineCode> EK </airlineCode> <airline> EMIRATES AIRLINES </airline> <flightNumber> 358 </flightNumber> <originCityCode> DXB </originCityCode> <destinationCityCode> CGK </destinationCityCode> <departureDateTime> 02/19/2012 10:30 AM </departureDateTime> <arrivalDateTime> 02/19/2012 9:35 PM </arrivalDateTime> <fareClass> X </fareClass> <equipmentCode> 77W </equipmentCode> <numberOfStops> 0 </numberOfStops> <originCity> Dubai </originCity> <originStateProvince/> <originCountry> AE </originCountry> <destinationCity> Jakarta </destinationCity> <desintationStateProvince/> <destinationCountry> ID </destinationCountry> </FlightSegment> <FlightSegment> <segmentOutgoing> true </segmentOutgoing> <airlineCode> GA </airlineCode> <airline> GARUDA INDONESIA </airline> <flightNumber> 404 </flightNumber> <originCityCode> CGK </originCityCode> <destinationCityCode> DPS </destinationCityCode> <departureDateTime> 02/20/2012 9:55 AM </departureDateTime> <arrivalDateTime> 02/20/2012 12:40 PM </arrivalDateTime> <fareClass> L </fareClass> <equipmentCode> 738 </equipmentCode> <numberOfStops> 0 </numberOfStops> <originCity> Jakarta </originCity> <originStateProvince/> <originCountry> ID </originCountry> <destinationCity> Denpasar Bali </destinationCity> <desintationStateProvince/> <destinationCountry> ID </destinationCountry> </FlightSegment> <FlightSegment> <segmentOutgoing> false </segmentOutgoing> <airlineCode> MH </airlineCode> <airline> MALAYSIAN AIRLINES </airline> <flightNumber> 852 </flightNumber> <originCityCode> DPS </originCityCode> <destinationCityCode> KUL </destinationCityCode> <departureDateTime> 02/23/2012 7:15 PM </departureDateTime> <arrivalDateTime> 02/23/2012 10:10 PM </arrivalDateTime> <fareClass> S </fareClass> <equipmentCode> 738 </equipmentCode> <numberOfStops> 0 </numberOfStops> <originCity> Denpasar Bali </originCity> <originStateProvince/> <originCountry> ID </originCountry> <destinationCity> Kuala Lumpur </destinationCity> <desintationStateProvince/> <destinationCountry> MY </destinationCountry> </FlightSegment> <FlightSegment> <segmentOutgoing> false </segmentOutgoing> <airlineCode> EK </airlineCode> <airline> EMIRATES AIRLINES </airline> <flightNumber> 343 </flightNumber> <originCityCode> KUL </originCityCode> <destinationCityCode> DXB </destinationCityCode> <departureDateTime> 02/24/2012 2:00 AM </departureDateTime> <arrivalDateTime> 02/24/2012 5:10 AM </arrivalDateTime> <fareClass> X </fareClass> <equipmentCode> 773 </equipmentCode> <numberOfStops> 0 </numberOfStops> <originCity> Kuala Lumpur </originCity> <originStateProvince/> <originCountry> MY </originCountry> <destinationCity> Dubai </destinationCity> <desintationStateProvince/> <destinationCountry> AE </destinationCountry> </FlightSegment> <FlightSegment> <segmentOutgoing> false </segmentOutgoing> <airlineCode> EK </airlineCode> <airline> EMIRATES AIRLINES </airline> <flightNumber> 133 </flightNumber> <originCityCode> DXB </originCityCode> <destinationCityCode> DME </destinationCityCode> <departureDateTime> 02/24/2012 9:35 AM </departureDateTime> <arrivalDateTime> 02/24/2012 3:00 PM </arrivalDateTime> <fareClass> X </fareClass> <equipmentCode> 345 </equipmentCode> <numberOfStops> 0 </numberOfStops> <originCity> Dubai </originCity> <originStateProvince/> <originCountry> AE </originCountry> <destinationCity> Moscow </destinationCity> <desintationStateProvince/> <destinationCountry> RU </destinationCountry> </FlightSegment> <tripType> R </tripType> <ticketType> E </ticketType> </AirAvailabilityReply> </AirAvailabilityResults> В данном случае в контейнере <AirAvailabilityResults size="99"> Находится много (в этом запросе 99) контейнеров <AirAvailabilityReply> Который содержат контейнер <RateInfo> и в нем контейнер <displayTotalPrice> и несколько контейнеров <FlightSegment> тоже с информацией как получить массив например чтоб достать displayTotalPrice [0][RateInfo][displayTotalPrice] где ноль это первый контейнер AirAvailabilityReply То есть удобный массив с которым я могу работать.. пробовал так: PHP: //создаём XML-разборщик $xml = xml_parser_create(); $rr = curl_multi_getcontent($ch1); //устанавливаем опции XML-разборщика xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE, 1); //разбираем XML-данные в структуру массива $xml_array xml_parse_into_struct($xml,$rr, $element, $xml_array); //освобождаем XML-разборщик xml_parser_free($xml); print_r($xml_array); Выводит не удобный массив вида: PHP: [0] => Array ( [tag] => AIRAVAILABILITYRESULTS [type] => open [level] => 1 [attributes] => Array ( [SIZE] => 99 ) ) То есть 1 блок это открывающий тег второй блок еще с чем-то потом еще что-то и закрывающий тег. Работать с таким массивом не удобно, учитывая что блоков 99 и больше и в каждом из них еще по 6-10 блоков.
XPath не поможет? PHP: <?php $xml = simplexml_load_file ('2.xml'); $xpath = $xml->xpath ('//AirAvailabilityReply/RateInfo/displayTotalPrice'); foreach ($xpath as $val) echo trim ($val), "\n"; ?>
Думаю SimpleXML идеально и предельно просто справиться с задачей. http://php.net/manual/ru/book.simplexml.php