XML парсер в массив на PHP

XML

По идее столько всего понаписано, чего огород то городить? От случая к случаю, конечно, пользуюсь библиотеками PHP. Но вместе с этим, есть объективные причины ими  пользоваться не всегда. Далее покажу совсем крохотный класс-конвертер XML в массив на базе xml_parser.

После парсинга данным классом получаем древовидный массив.

Вот пример HTML кода, который мы будет парсить:

В нем есть несколько разных тегов, а также инлайн строка — «ааа».

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

Получаем SimpleXMLElement объект вида:

Т.е на выходе какая то мешанина из объектов и массивов, теги группируются в массивы, инлайн данные вообще потеряны.

Теперь тоже самое парсим моей самоделкой.

Результат вот такой:

Т.е. получаем иерархический массив тегов, атрибуты перечисляются как хеш-массив, теги — как нумерованный массив. Я также делал вариант, когда дочерние элементы группировались в xeш — childs (переделать не сложно).

Класс для преобразования XML в массив

А теперь, код класса — в студию :)

Использование myXMLparser

В классе используется только одна public функция и та является static. Обернул в класс только для того, чтобы не засорять пространство имен и обернуть 3 функции. Используется так:

Написать комментарий

Мало букафф? Читайте есчо !

Вариант XML карты сайта для Drupal 7

Ноябрь 8, 2016 г.

Сначала написал вариант для Drupal 6, но в силу актуальности семерки, предлагаю вариант кода для 7й версии. Описание вы найдете в прошлой статье, здесь обновлена только работа с базой данных. Привожу код класса и пример его вызова. Код класса: ...

Читать

Пишем XML карту сайта для Drupal 6 сами

Декабрь 8, 2016 г.

Поначалу я думал, что сделаю карту с помощью модуля. Для типовых проектов - лучшего не придумаешь. Достал последнюю версию модуля xmlsitemap под 6-ю версию друпала, настроил типы публикаций и запустил rebuild ссылок. Но, видимо, публикаций оказалось ...

Читать

 

Комментарии к «XML парсер в массив на PHP»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий:

Много комментариев в “XML парсер в массив на PHP”

  1. Джигурда:

    Попробуй

    $xml = simplexml_load_string(‘xml-код’);
    $json = json_encode($xml);
    $array = json_decode($json,TRUE);

    echo «

    »;

  2. Alex:

    Хороший скрипт, только ошибка в нем, в 32 сроке, блин столько времени на это потратил.
    Вместо
    if (isset($v[‘attributes’])) $data += $v[‘attributes’];
    Нужно делать или:
    if (isset($v[‘attributes’])) $j[‘attributes’] = $v[‘attributes’];
    Или:
    if (isset($v[‘attributes’])) $j += $v[‘attributes’];
    Иначе часть информации теряется!!!