3м Буду!
Новичок
DomDocument:OMNodeList, DomDocument::removeChild или почему так не работает?
Привет.
есть:
1. xml
2. Пых-код удаления всех нод с именем items, который так работает:
а так нет:
вопрос: почему последний экзампл не работает с колекцией DOMNodeList?
ведь конструкция $parent->removeChild($child); удаляет из дерева объекта $dom, но не из этой коллекции, и по идее, итератору башню сносить не должно.
кроме того, если переписать последний пример так:
то есть без всяких итераторов, заданные ноды, из результирующего дерева, удалены не будут.
в общем: как осуществить удаление заданных нод используя ИСКЛЮЧИТЕЛЬНО коллекцию DOMNodeList, без создания временных массивов.
Большое спасибо
Привет.
есть:
1. xml
PHP:
....
<root>
<items>
<item>item 1</item>
.............
<itemN>item N</itemN>
</items>
<someOtherNode1>
...............
</someOtherNode1>
.........................
<someOtherNodeN>
...............
</someOtherNodeN>
<items>
<item>item 1</item>
.............
<itemN>item N</itemN>
</items>
</root>
PHP:
$node_list = $dom->getElementsByTagName('items');
$childs = array();
foreach ($node_list as $node) {
$childs[] = $node;
}
foreach ($childs as $child) {
$parent = $child->parentNode;
$parent->removeChild($child);
}
PHP:
$node_list = $dom->getElementsByTagName('items');
foreach ($node_list as $child) {
$parent = $child->parentNode;
$parent->removeChild($child);
}
ведь конструкция $parent->removeChild($child); удаляет из дерева объекта $dom, но не из этой коллекции, и по идее, итератору башню сносить не должно.
кроме того, если переписать последний пример так:
PHP:
$node_list = $dom->getElementsByTagName('items');
$items = $node_list->length;
for ($i = 0; $i < $items; $i++) {
$child = $node_list->item($i);
$parent = $child->parentNode;
$parent->removeChild($child);
}
в общем: как осуществить удаление заданных нод используя ИСКЛЮЧИТЕЛЬНО коллекцию DOMNodeList, без создания временных массивов.
Большое спасибо