0

为了在 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>

我怎样才能做到这一点?

4

1 回答 1

1

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

<?php

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

echo $nako->saveXml();

如果 PHP 版本低于 5.3,它会手动添加属性

更新我也用 PHP 5.2.17-dotdeb 试过这个,它开箱即用,两者

  • 添加属性
  • 以空字符串作为命名空间的 addChild
于 2013-01-18T21:16:12.750 回答