views:

29

answers:

1

Hello,

I have an array structure that have to be converted to MXML. I know of PEAR XML_Serialize extension but it seems the output format it produces is a bit different.
PHP generated XML:

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

MXML format:

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

Is that "mx:" prefix required for all the tags? If yes, can I make the XML_Serialize put it before each tag (without renaming my data structure fields to "mx:something")?

Here are my options for XML_Serialize:

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

You're missing the namespace declaration in your serializer. Add a namespace to your serializer like this:

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

You could also add it your $aOptions array:

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

In regard to whether the namespace is required - this really depends on what your XML declarations look like. If the default namespace is set to MXML already, then no - its not required.

thetaiko
Close, but now I have double "mx": <mx:mx:zone...
Ivan Petrushev