PHP SimpleXML:删除带有for的项目

tho*_*hom 4 php xml simplexml

我只需要从simpleXML元素中删除一个项目:

unset($this->simpleXML->channel->item[0]);
Run Code Online (Sandbox Code Playgroud)

但我不能用a表示:

    $items = $this->simpleXML->xpath('/rss/channel/item');
    for($i = count($items); $i > $itemsNumber; $i--) {
        unset($items[$i - 1]);
    }
Run Code Online (Sandbox Code Playgroud)

一些项目从$ items中删除(Netbeans Debug可以确认)但是当我再次获得路径时(/ rss/channel/item)没有删除任何内容.

怎么了?

Xav*_*osa 6

SimpleXML不处理节点删除,您需要使用DOMNode.令人高兴的是,当您将节点导入DOMNode时,实例指向同一棵树.

所以,你可以这样做:

<?php

$items = $this->simpleXML->xpath('/rss/channel/item');
foreach ($items as $item) {
    $node = dom_import_simplexml($item);
    $node->parentNode->removeChild($node);
}
Run Code Online (Sandbox Code Playgroud)