PHP SimpleXML:使用 for 删除项目

2023-12-15

我只是无法使用以下命令从简单的 XML 元素中删除项目:

unset($this->simpleXML->channel->item[0]);

但我不能使用 a for:

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

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

怎么了?


SimpleXML 不处理节点删除,您需要使用 DOMNode 来处理此操作。 令人高兴的是,当您将节点导入 DOMNode 时,这些实例都指向同一棵树。

所以,你可以这样做:

<?php

$items = $this->simpleXML->xpath('/rss/channel/item');
foreach ($items as $item) {
    $node = dom_import_simplexml($item);
    $node->parentNode->removeChild($node);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP SimpleXML:使用 for 删除项目 的相关文章