如何使用 PHP SimpleXMLElement 删除名称空间?

How to remove namespace with PHP SimpleXMLElement?

我有一个 XML 结构,需要看起来像这样才能工作:

<yq1:ZwsCreateInfoRec xmlns:yq1="urn:test-com:document:test:soap:functions:mc-style">
      <ItPrice>1337</ItPrices>
</yq1:ZwsCreateInfoRec>

为了尝试实现这一点,我使用了 SimpleXMLElement,如下所示:

$xml = SimpleXMLElement('<yq1:ZwsCreteMaterialFrRef xmlns:yq1="urn:test-com:document:test:soap:functions:mc-style"></yq1:ZwsCreteMaterialFrRef>');
$xml->addChild('ItPrice', '1337');

当我现在 运行 $xml->asXML() 它向我显示了这个(注意 ItPrice 节点上的命名空间):

<yq1:ZwsCreateInfoRec xmlns:yq1="urn:test-com:document:test:soap:functions:mc-style">
      <yq1:ItPrice>1337</yq1:ItPrices>
</yq1:ZwsCreateInfoRec>

出于某种原因,如果我在子节点上有这样的名称空间,WebService 将无法工作,但如果我删除它们,它就可以工作。有什么方法可以删除它,还是我必须将其作为字符串遍历并手动删除它们?

谢谢

您可以为 addChild 方法使用带空白值的第三个参数。 $xml->addChild('ItPrice', '1337', '');

$xml = new SimpleXMLElement('<yq1:ZwsCreteMaterialFrRef xmlns:yq1="urn:test-com:document:test:soap:functions:mc-style"></yq1:ZwsCreteMaterialFrRef>');
$namespaces = $xml->getDocNamespaces();
$xml->addChild('ItPrice', '1337', '');
echo  $xml->asXml();