PHP Conference Japan 2024

DOMDocument::createElementNS

(PHP 5, PHP 7, PHP 8)

DOMDocument::createElementNS 创建具有关联命名空间的新元素节点

描述

public DOMDocument::createElementNS(?string $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

参见

添加注释

用户贡献注释 1 条注释

2
Martin
12 年前
为了避免多次声明 xmlns,请确保将 ElementNS 附加到实际的 DOMDocument 树中(而不是附加到某些当前组装的废弃元素中)。
To Top