Php как получить теги xml

Пытался найти сам, но безуспешно.

Часть моего кода - получить xml из веб-службы и распечатать некоторые данные.

Я хочу получить всю информацию об отеле (теги), где id отеля = 285

а также, как мне узнать номер рейса, если внутренний тег отеля - "678"?

<packages>

    <pck type = "vacation">

        <flight num = "1">
            <date></date>
            <airline></airline>
            <hotels>
                <hotel>
                    <number>1</number>
                    <id>285</id>
                    <price>250 USD</price>
                </hotel>

                <hotel>
                    <number>2</number>
                    <id>678</id>
                    <price>480 USD</price>
                </hotel>                
            </hotels>
        </flight>

        <flight num = "2">
        </flight>

        <hotel_details>
            <hotel id = "285">
                <name>Alexander</name>
                <location></location>
                <rate></rate>
            </hotel>

            <hotel id = "678">
                <name>Leonardo</name>
                <location></location>
                <rate></rate>
            </hotel>            
        </hotel_details>        

    </pck>


    <pck type = "ski">

    </pck>

</packages>

Вам, безусловно, следует использовать для этого синтаксический анализатор xml. Взгляните на SimpleXML.

arkascha 10.12.2018 15:19

Похоже, это хороший пример использования XPath.

Rüdiger Schulz 10.12.2018 15:24

слишком много способов получить данные ... это сложно. Я попробовал их оба, но безуспешно. не могли бы вы мне показать? @arkascha

Roi 10.12.2018 15:31

Мы не собираемся писать код за вас, но если вы отредактируете свой вопрос и покажете нам, что вы пробовали, мы поможем вам найти решение.

Dave 10.12.2018 15:33

Я не уверен, что ваш XML находится в формате, пригодном для анализа. Вместо этого: <hotel id = "285"> <name> Александр </name> <location> </location> <rate> </rate> </hotel> Я бы сделал это, чтобы вы могли перебирать отель узел, проверяя значение id: <hotel> <id> 285 </id> <name> Александр </name> <location> </location> <rate> </rate> </hotel>

Mark 10.12.2018 15:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
5
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

PHP имеет класс DOMDocument (https://secure.php.net/manual/en/class.domdocument.php)

Это довольно просто:

$doc = new DOMDocument();
$doc->loadXML($xml);

// convert to xpath
$xpath = new DOMXPath($doc);

// search
$search_results = $xpath->query('//flight//hotel[@id=678]');

Подробнее читайте на:

  1. https://www.w3schools.com/xml/xml_xpath.asp
  2. Объектная модель документа

Другие вопросы по теме