sunsey
@sunsey
Web dev

xml сериализатор для php

Подскажите, есть ли для php нормальные xml сериализаторы наподобие XML_Serializer из pear. Он всем хорош, кроме производительности. Удобно настраивать, удобно переганять array->xml, но вот для апи понадобился вывод относительно большого xml(1.5 мб) и уже сериализация 3-4 секунды. json_encode — на порядок меньше, понятно что он встроен в php, поэтому и быстрей, но все же.
Чем вы пользуетесь в своих проектах, самописное?

В чем удобство Pear XML_Serializer:
require_once 'XML/Serializer.php';

$options = array(
                    XML_SERIALIZER_OPTION_INDENT               => '    ',
                    XML_SERIALIZER_OPTION_LINEBREAKS           => "\n",
                    XML_SERIALIZER_OPTION_DEFAULT_TAG          => 'unnamedItem',
                    XML_SERIALIZER_OPTION_SCALAR_AS_ATTRIBUTES => false,
                    XML_SERIALIZER_OPTION_ATTRIBUTES_KEY       => '_attributes',
                    XML_SERIALIZER_OPTION_CONTENT_KEY          => '_content'
                );

$data = array(
                'foo' => array(
                                '_attributes' => array( 'version' => '1.0', 'foo' => 'bar' ),
                                //'_content'    => 'test & test',
                                'places' => array("v1" => 1, 'v2' => 3)
                              ),
                'schst' => 'Stephan Schmidt'
            );

$serializer = new XML_Serializer($options);

$result = $serializer->serialize($data);

if ($result === true) {
    $xml = $serializer->getSerializedData();
    echo '<pre>';
    echo htmlspecialchars($xml);
    echo '</pre>';
} else {
    echo '<pre>';
    print_r($result);
    echo '</pre>';
}


получаем
<array>
    <foo foo="bar" version="1.0">
        <places>
            <v1>1</v1>
            <v2>3</v2>
        </places>
    </foo>
    <schst>Stephan Schmidt</schst>
</array>
  • Вопрос задан
  • 3964 просмотра
Пригласить эксперта
Ответы на вопрос 2
winbackgo
@winbackgo
Думаю быстрее будет если использовать simple_xml. Вот как пример snipplr.com/view/3491/. Не знаю для каких целей вам это нужно, но имхо json намного проще и лучше использовать.
Ответ написан
MARDEN
@MARDEN
Попробуйте компонент Serializer из фреймворка Symfony.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы