2013-12-09 25 views
0
$data = simplexml_load_file($source_url); 

,如果我通过循环一些项目看起来像这样PHP - 如何从一个XML对象获取foreach循环内的关键数字

[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”。不能完全弄清楚这一点。

+1

'unset($ data-> channel-> item [$ key])'在'foreach'里面工作吗? –

回答

0

如果你想从XML元素(不是阵列项目本身),你可以这样来做删除项目:

$dom = dom_import_simplexml($element); 
$dom->parentNode->removeChild($dom); 

对于删除阵列项目@戴夫陈的回答应该工作(只外foreach循环我认为)

0

使用DOM文档直接,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。