Справочники, инструменты, документация

PHP: Как получить данные из XML-файла

Представим, что перед вами стоит задача – спарсить данные из XML-файла.

Поскольку структура таких файлов может быть разной, то и трудности при написании своего скрипта также могут быть разными. Сегодня на примере одного из таких файлов, как с помощью PHP получить тот или иной параметр.

Итак, перед нами файл price.xml с примерно такой структурой:

<offers>
    <offer id="102" available="true">
        <url>www.pandoge.com</url>
        <name>Коробка</name>
        <param name="Высота">60</param>
        <param name="Ширина">20</param>
        <param name="Цвет">Синий</param>
    </offer>
</offers>

Для теста получим его содержимое, а именно – данные из поля URL:

header("Content-Type: text/html; charset=utf-8");
$xml = simplexml_load_file("./price.xml");
foreach ($xml->offer as $offer) {
    echo $offer->url;
}

Вроде бы все просто. А теперь попробуем получить значение, например, параметра «цвет» – и у большинства новичков здесь начинают возникать трудности. А решается эта проблема довольно просто с помощью использования «XPath» – специального языка, созданного для запросов к элементам XML.

header("Content-Type: text/html; charset=utf-8");
$xml = simplexml_load_file("./price.xml");
foreach ($xml->offer as $offer) {
    echo $offer->xpath('param[@name="Цвет"]')[0];
}

В таком случае мы получаем значение «Синий», что нам и необходимо, а остальные параметры - получаются по аналогии.