Просмотр полной версии : insertBefore
Mr. Fixit
07.11.2007, 09:24
$Content = $SubMain->insertBefore($xmlDoc->createElement('Content'), $SubMain->firstChild);
так добавляет вначало, как мне добится добавления в заданную область?
пробую никак не получается... :)
Mnilionic
07.11.2007, 21:24
$Content = $SubMain->insert_before($xmlDoc->create_element("content"), $SubMain);
нужно чтоб $SubMain был ПОСЛЕ заданной области :)
Mr. Fixit
07.11.2007, 22:30
тоесть?
зы: синтаксис правильный у меня... пхп5
Mnilionic
07.11.2007, 22:54
что не понятно?
у вас написано вставитьПеред($SubMain->firstChild)
соответственно, то что вставиться станет первым чайлдом
если вам нужно вставить его между третим и четвёртым, то и нужно вставлять перед чётвертым
Mr. Fixit
07.11.2007, 22:57
ну я хочу создать ветку в середине после третего нода, как мне тогда написать?
что писать во 2м параметре?)
Mnilionic
07.11.2007, 22:58
во втором параметре вам нужно указать ссылку на 4ый нод
Mr. Fixit
08.11.2007, 00:40
ссылка на 4й нод ($SubMain->childNodes[4])?
Mnilionic
08.11.2007, 00:54
вот пример
<?php
function xml2str($dom, $format = false, $shield = false){
$str = $dom->dump_mem($format);
if($shield)
$str = htmlspecialchars( $str );
return $str;
}
// изначальный xml
$str =<<<XML
<x>
<y n="1"/>
<y n="2"/>
<y n="3"/>
</x>
XML;
$dom = domxml_open_mem($str);
$root = $dom->document_element();
// выводим изначальный xml
print "<pre>".xml2str($dom, 1, 1)."</pre>";
получаем ссылку на нужный нод перед которым вставлять будем
$y = $root->first_child();
$y = $y->next_sibling();
$y = $y->next_sibling();
$y = $y->next_sibling();
// вставляем
$node = $y->insert_before($dom->create_element("hi"), $y);
// выводим что получилось
print "<pre>".xml2str($dom, 1, 1)."</pre>";
?>
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.