我尝试了什么,什么不起作用:
输入:
$d = new DOMDocument(); $d->formatOutput = true; // Out of my control: $someEl = $d->createElementNS('http://example.com/a', 'a:some'); // Under my control: $envelopeEl = $d->createElementNS('http://example.com/default', 'envelope'); $d->appendChild($envelopeEl); $envelopeEl->appendChild($someEl); echo $d->saveXML(); $someEl->prefix = null; echo $d->saveXML();
替换后的输出是无效的 XML:
<?xml version="1.0"?> <envelope xmlns="http://example.com/default"> <a:some xmlns:a="http://example.com/a"/> </envelope> <?xml version="1.0"?> <envelope xmlns="http://example.com/default"> <:some xmlns:a="http://example.com/a" xmlns:="http://example.com/a"/> </envelope>
注意<a:some>
可能有孩子。一种解决方案是创建一个新的<some>
,并将所有子级从 复制<a:some>
到<some>
。这是要走的路吗?