Парсинг XML с помощью SimpleXML

Опубликовано Опубликовано в рубрике PHP, XML

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

До этого XML-документ парсился с помощью функций, которые заимствованы из PHP 4-й версии. Однако PHP5 подарил миру очень удобную вещь под названием SimpleXML. О том, как же с ним работать, и пойдёт речь сегодня.

Стоит начать с того, что SimpleXML — это отдельный подключаемый модуль, а потому его надо заранее подключить на используемом сервере.

Теперь мы можем работать!

Для того, чтобы обработать документ, используем функцию simplexml_load_file(). В качестве параметра ей передается адрес файла в формате eXtended Markup Language (XML — Ваш К.О.). Выглядит это примерно так:

$xml = simplexml_load_file('file.xml');

Прелесть данной функции в том, что ей совершенно спокойно можно передать файл с любого сервера. Таким образом, у нас появляется возможность обрабатывать внешние xml-выгрузки (к примеру, Яндекс-XML или сторонние RSS-ленты).

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

print_r $xml;

После этого можно приступать к обработке полученных данных.

Для примера я возьму простенькую конструкцию отсюда:



 
  PHP: Появление Парсера
  
   
    Ms. Coder
    Onlivia Actora
   
   
    Mr. Coder
    El ActÓr
   
  Mr. ParserJohn Doe
  
   Таким образом, это язык. Это все равно язык программирования. Или
   это скриптовый язык? Все раскрывается в этом документальном фильме,
   похожем на фильм ужасов.
  
  
   PHP решает все мои задачи в web
  
  7
  5
 PG

Пусть это будет файл export.xml, который лежит прямо в корне моего сервера вместе с обрабатывающим его скриптом.
Массив строится в соответствии со структурой DOM-элементов в XML-документе. Обработка начинается от корня. Для того, чтобы получить имя Ms. Coder, мы должны выстроить следующий путь: $xml->movies->movie->characters->character[0]->name.
Обращаю внимание, что мы выбираем конкретное значение. Отсюда и берется запись такого рода character[0] — не забываем, что мы работаем с массивом!

Как и любой массив, наши данные можно обработать при помощи цикла foreach. Код будет такой:

$xml =  simplexml_load_file('export.xml');//выгрузили файл
$ttl = $xml->movies->movie->title; //получили заголовок. он один, так что [0] или другое значение ставить не надо

foreach ($xml->movies->movie->caracters as $crc) // а теперь поработаем в динамике
{
  //выведем имена героев
  $name = $crc->caracter->name;
  echo ("$name 
"); }

Такой код положит в переменную $ttl текст «PHP: Появление Парсера», а затем выведет построчно на экран имена героев
Ms. Coder, Mr. Coder, Mr. Parser.

Принимайте на вооружение и усложняйте!

Безошибочного Вам кода!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *