Подскажите, есть ли для 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>