2010-04-27 109 views
1

我有一个数组结构,必须转换为MXML。我知道PEAR XML_Serialize扩展,但它似乎产生的输出格式有点不同。
PHP生成的XML:如何使用PHP反序列化MXML?

<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:something”)?

这里是我的选项XML_Serialize

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

回答

0

你错过了你的序列化的命名空间声明。命名空间添加到您的串行这样的:

$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,则不需要 - 它不是必需的。

+0

关闭,但现在我有双“mx”: 2010-04-28 06:36:07