如何将空命名空间添加到simpleXML元素

时间:2013-01-18 20:54:57

标签: php simplexml xml-namespaces

为了模拟在Web服务的本地php测试环境版本中从SOAP Web服务检索的XML,我希望向元素添加一个空名称空间,就像实际的Web服务本身一样。

但是当我向addChild方法添加一个空字符串命名空间参数时,它不会被添加。任何其他值确实给了我一个命名空间,但正如我所说,我希望有一个空的。

所以

$xml = new SimpleXMLElement('<cdhead/>');
$nako = $xml -> addChild ('nako', '000', '');

给了我

<cdhead>
    <nako>000</nako>
</cdhead>

但我希望

<cdhead>
    <nako xmlns="">000</nako>
</cdhead>

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

这个问题是因为你使用的是php 5.2。它是一个错误,并在PHP 5.2系列中得到修复。在这里,您可以查看Bugreport。我已经使用PHP 5.3进行了测试,您的示例开箱即用。这应该适用于任何情况:

<?php

$xml = new SimpleXMLElement('<cdhead/>');
$nako = $xml -> addChild ('nako', '000');
$nako->addAttribute('xmlns', '');

echo $nako->saveXml();

如果PHP版本低于5.3

,则手动添加属性

UPDATE 我也尝试使用PHP 5.2.17-dotdeb,它开箱即用,两者都

  • 的addAttribute
  • addChild,空字符串为命名空间