Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将空命名空间添加到simpleXML元素_Php_Simplexml_Xml Namespaces - Fatal编程技术网

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

Php 如何将空命名空间添加到simpleXML元素,php,simplexml,xml-namespaces,Php,Simplexml,Xml Namespaces,为了在web服务的本地php测试环境版本中模拟从SOAP web服务检索的XML,我希望向元素添加一个空名称空间,就像实际web服务本身提供的那样 但是,当我向addChild方法添加空字符串命名空间参数时,它不会被添加。任何其他值都会给我一个名称空间,但正如我所说的,我希望有一个空名称空间 所以 $xml=新的SimpleXMLElement(“”); $nako=$xml->addChild('nako','000',''); 给我 <cdhead> <nako&

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

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

所以

$xml=新的SimpleXMLElement(“”);
$nako=$xml->addChild('nako','000','');
给我

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

000
但我希望有

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

000

如何实现这一点?

这个问题是因为您使用的是PHP5.2。这是一个bug,在PHP5.2系列中已修复。在这里您可以查看。我已经使用PHP5.3进行了测试,您的示例是开箱即用的。这在任何情况下都应该有效:

<?php

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

echo $nako->saveXml();
addChild('nako','000');
$nako->addAttribute('xmlns','');
echo$nako->saveXml();
如果PHP版本低于5.3,则手动添加该属性

更新我也用PHP5.2.17-dotdeb进行了尝试,结果都是开箱即用

  • 添加属性
  • 使用空字符串作为命名空间的addChild

为什么要在文档中间有一个空的命名空间?这听起来很奇怪me@hek2mgl因为我的供应商也这样做,我希望在我的测试环境中模仿它。你的php版本是什么?我试过你的例子,它给了我你所期望的。@hek2mgl,正如我所说,然后我得到0000。当我使用“”作为名称空间时,我得到0000。唯一不起作用的是空字符串:-(很好的尝试,但效果并不好:当我添加该语句时,nako元素就不再存在了。另外,当我只添加一个普通的addAttribute时,同样的情况也会发生。现在我意识到我已经提到我已经尝试了addAttribute xmlns,但没有任何效果。很难说。我已经使用PHP 5.3测试了我的示例(没有if)(当然是PHP_版本)$nako->addAttribute('xmlns','')workedIt显示是我的应用程序切断了空的名称空间。当我在浏览器中打开php并查看源代码时,我看到xml加上空的NS。实际上,上面的代码给出了两次xmlns值,这显然被我的应用程序视为无效而拒绝。我已经解决了这个问题。当我在brows中打开时,为一个'呃,我看到了",",|
<?php

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

echo $nako->saveXml();