2014-10-27 70 views
1

错误“未捕获的异常‘抛出:DOMException’有消息‘命名空间的错误’”,在如何使用“纯DOM”在根标签处设置命名空间(xmlns)声明?

$dom = new DOMDocument('1.0', 'utf-8'); 
$root = $dom->createElement('MyRoot','Hello'); 
$root->setAttributeNS('http://www.w3.org/1999/xlink','xmlns:xlink','xlink'); 
$dom->appendChild($root); 
die($dom->saveXML()); 

如何设置在根标签的xmlns声明?产生

<MyRoot xmlns:xlink="http://www.w3.org/1999/xlink"/>Hello</MyRoot> 
+0

要在片段中使用,请参见[此PHP错误](http://stackoverflow.com/q/26593430/287948)。 – 2014-11-10 18:38:04

回答

1

所述的xmlns的名称空间:的xlink不是它的值,而是一个标准的命名空间。前缀xmlns用于标准名称空间http://www.w3.org/2000/xmlns/。您不需要定义该名称空间。

所有名称空间属性(xmlns =“...”除外)都是此名称空间的一部分。

$dom = new DOMDocument('1.0', 'utf-8'); 
$root = $dom->createElement('MyRoot','Hello'); 
$root->setAttributeNS(
    'http://www.w3.org/2000/xmlns/','xmlns:xlink','http://www.w3.org/1999/xlink' 
); 
$dom->appendChild($root); 

echo($dom->saveXML()); 

输出:

<?xml version="1.0" encoding="utf-8"?> 
<MyRoot xmlns:xlink="http://www.w3.org/1999/xlink">Hello</MyRoot> 
0

设置XMLNS命名空间,那么xmlns:xlink属性名称,然后将要设置......这是XLink的URL属性的值。

$dom = new DOMDocument('1.0', 'utf-8'); 
$root = $dom->createElement('MyRoot','Hello'); 
$root->setAttributeNS('http://www.w3.org/2000/xmlns/','xmlns:xlink','http://www.w3.org/1999/xlink'); 
$dom->appendChild($root); 
die($dom->saveXML()); 

<?xml version="1.0" encoding="utf-8"?> 
<MyRoot xmlns:xlink="http://www.w3.org/1999/xlink">Hello</MyRoot> 
+0

你好,谢谢!但是第一个(问题投票),ThW还是你? – 2014-10-27 18:54:31

+0

看起来像@ThW在'2014-10-27 18:34:08Z'提交,我在'2014-10-27 18:34:13Z'提交。该游戏在5秒内击败了我。 – slapyo 2014-10-27 18:56:39

+0

那么...有一个新的好问题相关,http://stackoverflow.com/q/26593430/287948 – 2014-10-27 19:17:19