2011-05-16 51 views
1
<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <channel> 
      <item> 
       <category>Cat1</category> 
      </item> 
      <item> 
       <category>Cat1</category> 
      </item> 
      <item> 
       <category>Cat2</category> 
      </item> 
      <item> 
       <category>Cat3</category> 
      </item> 
    </channel>  
</root> 

我有這個xml,我如何得到一個項目的最後一個類別沒有重複? 我想:XML DOMXPath搜索

<?php 
     $DOMDocument = new DOMDocument('1.0', 'utf-8'); 
     $DOMDocument->preserveWhiteSpace = false; 
     $DOMDocument->load('xml.xml'); 
     $DOMXPath = new DOMXPath($DOMDocument); 
     foreach($DOMXPath->query('.//channel/item/category[last()]/parent::node()') as $Nodes){ 
       foreach($Nodes->childNodes as $Node){ 
          $RSS[ $Node->nodeName ] = $Node->nodeValue; 
       } 
       $RSSContents[] = $RSS; 
     } 
     echo '<pre>'; 
     print_r($RSSContents); 

但retorning:

Array 
(
    [0] => Array 
     (
      [category] => Cat1 
     ) 

    [1] => Array 
     (
      [category] => Cat1 
     ) 

    [2] => Array 
     (
      [category] => Cat2 
     ) 

    [3] => Array 
     (
      [category] => Cat3 
     ) 

) 

我需要最後的貓的1個+其他項目

+0

你是什麼意思「我需要返回最後的貓1 +其他項目」 – Gordon 2011-05-16 15:12:56

+0

得到最後一個分類:我有{cat1,cat1(last),cat2,cat3}需要返回{cat1(last),cat2,cat3} – XML4Parse 2011-05-16 15:14:18

回答

2

返回以下XPath應在文檔中選擇每個類別的最後一個項目

/root/channel/item[not(category = following::category)] 
+0

坦克,這個完美的作品 – XML4Parse 2011-05-16 16:59:02

+0

不客氣。如果這解決了您的問題,我會很感激,如果您可以通過點擊旁邊的複選標記圖標勾選答案。也顯示其他人已經解決了。謝謝。 – Gordon 2011-05-16 17:02:46