Все большее число web сервисов возвращает данные в формате JSON, но до сих пор огромное количество данных возвращается в формате XML.
Расширение PHP — SimpleXML, которое был введено еще в PHP 5.0, очень сильно упростило парсинг XML. Давайте посмотрим на сколько это просто.
ИСПОЛЬЗОВАНИЕ
Возмем небольшой XML файл:
<?xml version="1.0" encoding="utf-8"?> <languages> <lang name="C"> <appeared>1972</appeared> <creator>Dennis Ritchie</creator> </lang> <lang name="PHP"> <appeared>1995</appeared> <creator>Rasmus Lerdorf</creator> </lang> <lang name="Java"> <appeared>1995</appeared> <creator>James Gosling</creator> </lang> </languages>
Данный файл описывает 3 языка программирования. У каждого языка есть свой автор (creator) и год разработки (appeared)
Первым делом загрузим наш .xml файл с помощью функции simplexml_load_file() или simplexml_load_string(). Далее к этому файлу мы будем обращаться через переменную $languages
<?php $languages = simplexml_load_file("languages.xml");
Обе функции читают DOM дерево и возвращают SimpleXMLElement объект, который будет храниться в переменной $language.
Используя функцию var_dump() или print_r() мы получим подробную информацию о возвращенном объекте.
SimpleXMLElement Object ( [lang] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [name] => C ) [appeared] => 1972 [creator] => Dennis Ritchie ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [name] => PHP ) [appeared] => 1995 [creator] => Rasmus Lerdorf ) [2] => SimpleXMLElement Object ( [@attributes] => Array ( [name] => Java ) [appeared] => 1995 [creator] => James Gosling ) ) )
В XML содержится три lang элемента, поэтому SimpleXMLElement состоит из массива 3-х элементов lang.
ОБРАЩЕНИЕ К ЭЛЕМЕНТАМ
Вы можете получить доступ к каждому элементу обычным путем, используя оператор ->.
Для примера: $language->lang[0] выдаст первый lang элемент. Элемент будет содержать 2 свойства: appeared и creator.
<?php $languages->lang[0]->appeared; $languages->lang[0]->creator;
С помощью цикла foreach можно пройти по всем языкам в документе. Для этого напишем код:
<?php foreach ($languages->lang as $lang) { printf( "<p>%s appeared in %d and was created by %s.</p>", $lang["name"], $lang->appeared, $lang->creator ); }
Обратите внимание, что здесь используется запись:
$lang["name"]
С помощью таких записей мы можем обращаться к атрибутам элементов.
В данной статье приведена основная информация о работе с SimpleXML.
Более детально читайте здесь: