為了避免多次重新宣告 xmlns,請確保您將 ElementNS 附加到實際的 DOMDocument 樹狀結構中(而不是附加到目前組裝的廢棄元素中)。
(PHP 5, PHP 7, PHP 8)
DOMDocument::createElementNS — 建立具有關聯命名空間的新元素節點
$namespace
, string $qualifiedName
, string $value
= ""): DOMElement|false這個函式會建立一個具有關聯命名空間的新元素節點。除非使用(例如)DOMNode::appendChild() 插入,否則此節點不會顯示在文件中。
namespace
命名空間的 URI。
qualifiedName
元素的限定名稱,格式為 prefix:tagname
。
value
元素的值。預設情況下,會建立一個空元素。您也可以稍後使用 DOMElement::$nodeValue 設定值。
新的 DOMElement 或發生錯誤時回傳 false
。
DOM_INVALID_CHARACTER_ERR
如果 qualifiedName
包含無效字元,則會引發此錯誤。
DOM_NAMESPACE_ERR
如果 qualifiedName
是格式錯誤的限定名稱,則會引發此錯誤。
範例 #1 建立新元素並將其插入為根元素
<?php
$dom = new DOMDocument('1.0', 'utf-8');
$element = $dom->createElementNS('http://www.example.com/XFoo', 'xfoo:test', 'This is the root element!');
// 我們將新元素插入為根元素(文件的子元素)
$dom->appendChild($element);
echo $dom->saveXML();
?>
上述範例將輸出
<?xml version="1.0" encoding="utf-8"?> <xfoo:test xmlns:xfoo="http://www.example.com/XFoo">This is the root element!</xfoo:test>
範例 #2 命名空間前綴範例
<?php
$doc = new DOMDocument('1.0', 'utf-8');
$doc->formatOutput = true;
$root = $doc->createElementNS('http://www.w3.org/2005/Atom', 'element');
$doc->appendChild($root);
$root->setAttributeNS('http://www.w3.org/2000/xmlns/' ,'xmlns:g', 'http://base.google.com/ns/1.0');
$item = $doc->createElementNS('http://base.google.com/ns/1.0', 'g:item_type', 'house');
$root->appendChild($item);
echo $doc->saveXML(), "\n";
echo $item->namespaceURI, "\n"; // 輸出:http://base.google.com/ns/1.0
echo $item->prefix, "\n"; // 輸出:g
echo $item->localName, "\n"; // 輸出:item_type
?>
上述範例將輸出
<?xml version="1.0" encoding="utf-8"?> <element xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0"> <g:item_type>house</g:item_type> </element> http://base.google.com/ns/1.0 g item_type