Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: X технологии > DOMNode в строку , а потом в файл


Автор: takomac 25.7.2007, 20:03
Проблема заключается в следующем 
: хочу сохранить один элемент в отдельный файл.
делаю примерно следующим  образом 
Код

function write_tree($node)
{
    $tmp = new DOMDocument("1.0");
    $element=$tmp->createElement($node->nodeName);
    $tmp->firstChild->appendChild($tmp->importNode($node));
    $tmp->formatOutput=true;
    $tmp->encoding="windows-1251";
    $tmp->save("some_".time().".xml");
}

на выходе получаю
файл с одним элементом названием узла $node->nodeName который оказывается пустым
при всем этом , если сделать 
Код

if ($tmp->firstChild->hasChildNodes()) print "true";
else print "false";

перед $tmp->save то напечатает true и если сделать 
Код

$tmp->firstChild->firstChild->nodeName;
 
то получим имя элемента $node , который приходит как параметр.

Одним предложением можно сформулировать проблему так:
Элемент присутствует при проверке в через класс DOMDocument , но отсудствует при дампе.



Автор: Golda 27.7.2007, 13:52
Для меня пока загадка, почему Вы через DOM видите свой элемент. Вы же создали элемент

Код

$element=$tmp->createElement($node->nodeName);


но не подключили его. Попробуйте исправить функцию так:

Код

function write_tree($node)
{
    $tmp = new DOMDocument("1.0");
    $tmp->formatOutput=true;
    $tmp->encoding="windows-1251";
    $tmp->appendChild($tmp->importNode($node, true));
    $tmp->save("some_".time().".xml");
}


Ну и проверки на ошибки стоит добавить

Автор: takomac 5.8.2007, 15:25
спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)