$data = simplexml_load_file($source_url);
如果我循环浏览一些看起来像这样的项目
[item] => Array
(
[0] => SimpleXMLElement Object
(
[title] => Justin Bieber and Chance the Rapper Collaborate
[link] => http://feedproxy.google.com/~r/absolutepunknet/~3/vn98Mqyr4_4/showthread.php
[pubDate] => Mon, 09 Dec 2013 07:37:44 GMT
[description] => SimpleXMLElement Object
(
)
[category] => News
[guid] => http://www.absolutepunk.net/showthread.php?t=3576311
)
[1] => SimpleXMLElement Object
(
[title] => SimpleXMLElement Object
(
)
[link] => http://feedproxy.google.com/~r/absolutepunknet/~3/IjS0KtTy8Ws/showthread.php
[pubDate] => Mon, 09 Dec 2013 07:06:56 GMT
[description] => SimpleXMLElement Object
(
)
[category] => News
[guid] => http://www.absolutepunk.net/showthread.php?t=3576281
)
使用
foreach ($data->channel->item as $key => $value)
如何访问并可能删除其中一个对象,在本例中,我想删除[1] => SimpleXMLElementOjbect
我尝试使用$ key的值,但只包含单词“item”。不能完全理解这一点。
答案 0 :(得分:0)
如果要从XML元素(而不是数组项本身)中删除该项,可以这样做:
$dom = dom_import_simplexml($element);
$dom->parentNode->removeChild($dom);
删除数组项目@Dave Chen的答案应该有效(我认为只在foreach循环之外)
答案 1 :(得分:0)
直接使用DOMDocument,DOMXpath查找节点:
$dom = new DOMDocument();
$dom->load($rssFile);
$xpath = new DOMXpath($dom);
//fetch the second item into a list
$items = $xpath->evaluate('/rss/channel/item[2]');
foreach ($items as $item) {
// remove the item from its parent node
$item->parentNode->removeChild($item);
}
echo $dom->saveXml();
在Xpath列表中,位置从1开始而不是0. PHP中的索引1是Xpath中的位置2。