DOMElement, немогу понять одной вещи

Andrey_f

Новичок
DOMElement, немогу понять одной вещи

Хочу сделать функцию котораябы возвращала XML ветку, и потом она присваивался основному дереву

Пример

PHP:
function create_page()
{
	$page = new DOMElement('page');
	
	$title = new DOMElement('title','заголовок');
	$description = new DOMElement('description','описание');
	
	$page->appendChild($title);
	$page->appendChild($description);
	
	return($page);
}


$DOM = new DOMDocument();
$site = $DOM->createElement('site');

$DOM->appendChild();

$site->appendChild(create_page());

echo $DOM->saveXML();
Но в данном варианте вылезает ошибка "No Modification Allowed Error" вот на этой строчке
PHP:
$page->appendChild($title);
Я понимаю что я чтото не понимаю в DOM но немогу понять что. Знаю что будет все работать если в функцию передать по ссылке родительский элемент и созданый элемент добавить к родительскому (пример ниже), но мне надо автономно (без привязки в родительскому) создать Елемент (а в нем еще привязанные элементы), а потом уже этот элемент привязать к родительскому. т.е. может я не от того классса создаю елемент $page, может надо от DOMNodе создавать или еще от чего, подскажите!


Рабочий вариант, но мне надо сделать так чтобы в функцию не передовать по ссылке родительский элемент, а только потом результат функции присвавать к родительскому, т.е. функция должна возвращать ветку с элементами
PHP:
function create_page(&$site)
{
	$page = new DOMElement('page');
	
	$site->appendChild($page);
	
	$title = new DOMElement('title','заголовок');
	$description = new DOMElement('description','описание');
	
	$page->appendChild($title);
	$page->appendChild($description);
	
	return($page);
}


$DOM = new DOMDocument();
$site = $DOM->createElement('site');

$DOM->appendChild($site);

$site->appendChild(create_page($site));

echo $DOM->saveXML();
 

FB3

Новичок
http://us2.php.net/manual/en/function.dom-domdocument-importnode.php
Глянь вот это. Вроде должно помочь.
 

GraywinD

Новичок
DOMElement::__construct — Creates a new DOMElement object

DOMElement
__construct ( string $name [, string $value [, string $namespaceURI ]] )

Creates a new DOMElement object. This object is read only. It may be appended to a document, but additional nodes may not be appended to this node until the node is associated with a document. To create a writeable node, use DOMDocument::createElement or DOMDocument::createElementNS.
 
Сверху