@tytar

Обработка xml-фрагментов?

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

xml по структуре такой:
<foo>
<bar>sample</bar>
<items>
<item1>1<item>
<item2>2<item>
</items>
</foo>


массив такой
[foo]  => array (
[bar] => sample
[items] => array (
[item1] => 1
[item2] => 2
)
)



Пробовал SimpleXML и прочее, нет ничего легче.

Грубо говоря что то подобное — 2х функций build_xml и parse_xml?

Не хочется велосипеды свои писать.
  • Вопрос задан
  • 3012 просмотров
Решения вопроса 1
EugeneOZ
@EugeneOZ
Не так уж это просто, честно говоря.
Вот могу предложить посмотреть мою реализацию: github.com/jamm/HTTP/blob/master/lib/Jamm/HTTP/SerializerXML.php
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@werdender
Тут могут быть проблемы с размером — xml-и бывают достаточно большие, а, например, тот же simpleXML глотает его целиком и может упереться в память. Описать/найти такие классы/функции конечно особого труда не составит (XML2Array и Array2XML есть, например, тут, да и на SO часто мелькали похожие вопросы), но они тоже могут столкнуться с этой проблемой.

Имхо удобнее просто использовать simpleXML, а в случае с большими файлами обходить файл XMLReader-ом, скармливая текущий узел в simpleXML.
Ответ написан
@Melz
Проще SimpleXML быть уже не может :)
Кстати это называется сериализацией и на этом вопросе куча копий сломано.

Тут собственно два варианта: велосипед, универсально или зоопарк.

1. велосипед: делаете класс поверх списка, имплементацию интерфейсов списка, переопределяете сериализацию и работаете с классом как со списком.

2. Универсально: тащите библиотеку, но чтобы работало правильно прийдется заморачиваться с доктайпом и получать кучу ненужных бонусов.

На пример github.com/ktomk/Serialized
github.com/ktomk/Serialized/blob/master/examples/02-xml-dumper/example-array.php — пример

3. Зоопарк
Немного отовсюду :) WDDX и сервисы
uk1.php.net/manual/en/wddx.examples-serialize.php
Ответ написан
Arks
@Arks
DOMDocument + XPath на Вас, окаянных, нет!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы