PHP 5.6.0 released

DomDocument->create_element

(PHP 4 >= 4.1.0)

DomDocument->create_elementCreate new element node

Description

domelement DomDocument->create_element ( string $name )

This function returns a new instance of class DomElement. The tag name of the element is the value of the passed parameter. This node will not show up in the document unless it is inserted with (e.g.) domnode_append_child().

The return value is FALSE if an error occurred.

See also domdocument_create_element_ns(), domnode_append_child(), domdocument_create_text(), domdocument_create_comment(), domdocument_create_attribute(), domdocument_create_processing_instruction(), domdocument_create_entity_reference(), and domnode_insert_before().

add a note add a note

User Contributed Notes 6 notes

up
0
arimbourg at ariworld dot eu
5 years ago
It seem that the domDocument 'create_element' method don't work anymore in php 5.2.6.
We have to use the DOM 'createElement' instead.
up
0
Mikael Ljungberg
9 years ago
When creating empty nodes like xhtml:link, the output misses the closing slash. This is what I got:

<link ...>
up
0
dk
10 years ago
The first example on this page is also a bit verbose. Since the DomElement class inherits/extends the DomNode class, one does not, in fact, have to get another reference to the first node. The create_element method has already given you that reference. (Also, the last line passes a string to the append_child method, instead of a DomNode object) Simplified:

<?
$new_element = $dom->create_element("new_element");
$new_element->append_child($another_element);
$oldTag->append_child($new_element);
?>
up
0
Jorrit Kronjee
10 years ago
The example done by Nico Almhoedi has a small error.

Since append_child only accepts DomElement (which is an object), it should've been:

$new_element = DomDocument->create_element("new_el");
$new_node = $existent_node->append_child($new_element);
up
0
Nico almhoedi at gmx dot de
11 years ago
It's easier possible since DomNode->append_child($new_element) returns the new child as an object, so you can refer to it immediately.

To append a child to the node $existent_node:

$new_element = DomDocument->create_element("new_el");
$new_node = $existent_node->append_child("new_el");

see Manual DomNode->append_child()
up
0
greg@cabinetuk
11 years ago
Its important to remember, when adding a created element to an existing node using append_child(), that if you want to then add another element to that node you have to go back and set up a DOMNode instance using DOMDocument_get_elements_by_tagname or similar before you can append another node onto it.

eg

<?
$new_element = $dom->create_element("new_element");
$oldTag->append_child($new_element);
//Go back and set up new element as DOMNode
$new_elementArray = $dom->get_elements_by_tagname("new_element");
$new_elementTag = $new_elementArray[0];//(if theres more than one use a for loop)

$new_elementTag->append_child("another_new_element");
?>
To Top