如何在root标签上设置namespace(xmlns)声明,使用“pure DOM”?

时间:2014-10-27 18:23:24

标签: php domdocument

错误“未捕获异常'DOMException',消息'命名空间错误'”在

 $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>

2 个答案:

答案 0 :(得分:2)

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>

答案 1 :(得分:0)

设置XMLNS名称空间,然后设置xmlns:xlink的属性名称,然后设置要设置的属性的值...这是xlink网址。

$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>