Как десериализовать MXML с помощью PHP? - PullRequest
1 голос
/ 27 апреля 2010

У меня есть структура массива, которая должна быть преобразована в MXML. Я знаю о PEAR XML_Serialize расширении, но кажется, что выходной формат, который он производит, немного отличается.
XML сгенерированный XML:

<zone columns="3">
        <select column="1" />
        <select column="4" />
</zone>

Формат MXML:

<mx:zone columns="3">
        <mx:select column="1" />
        <mx:select column="4" />
</mx:zone>

Требуется ли префикс "mx:" для всех тегов? Если да, могу ли я заставить XML_Serialize поставить его перед каждым тегом (не переименовывая мои поля структуры данных в «mx: что-то»)?

Вот мои варианты для XML_Serialize:

$aOptions = array('addDecl' => true, 'indent' => "    ", 'rootName' => 'template', 
'scalarAsAttributes' => true, 'mode' => 'simplexml');

1 Ответ

0 голосов
/ 27 апреля 2010

В вашем сериализаторе отсутствует объявление пространства имен. Добавьте пространство имен в ваш сериализатор следующим образом:

$serializer->setOption('namespace', array('mx', 'http://ns.adobe.com/mxml/2009'));

Вы также можете добавить его в свой массив $ aOptions:

$aOptions = array(
  'addDecl' => true,
  'indent' => "    ",
  'rootName' => 'template',
  'scalarAsAttributes' => true,
  'mode' => 'simplexml',
  'namespace' =>array('mx', 'http://ns.adobe.com/mxml/2009')
);

Относительно того, требуется ли пространство имен - это действительно зависит от того, как выглядят ваши объявления XML. Если для пространства имен по умолчанию уже задано значение MXML, то нет - его не требуется.

...