2014-11-22 65 views
0

我已經設法使用PHP創建XML文檔。我現在想用PHP來循環訪問xml文檔並適當地顯示它。這是我已經有的代碼,但似乎沒有工作。使用PHP處理XML

PHP循環

<?php 
      $rss2 = simplexml_load_file('food.xml'); 
       print "<h3>XML document processed with PHP</h3>"; 
      foreach ($rss2->xml->item as $item){ 
       print "Title: ". $item->name."<br>"; 
       print "Link: <a href=".$item->link.">".$item->link."</a><br>"; 
       print "Description: ". $item->description."<br>"; 
       print "<hr />"; 
      } 
?> 

XML文檔

<?xml version="1.0"?> 
<xml> 
    <item> 
    <name>Food home page</name> 
    <link>http://www.food.com/</link> 
    <description>home cooking inspiration</description> 
    </item> 
    <item> 
    <name>Popular recipes</name> 
    <link>http://www.food.com/recipes-popular</link> 
    <description>Popular home food recipes</description> 
    </item> 
    <item> 
    <name>Pulled pork</name> 
    <link>http://www.food.com/recipe/pulled-pork-crock-pot-131018</link> 
    <description>Crock pot pulled pork recipe</description> 
    </item> 
</xml> 

任何人的幫助將不勝感激 感謝

+0

RSS的文檔元素應該是「rss」而不是「xml」。 * BTW * – ThW 2014-11-22 12:02:46

回答

0

通過使用調試器或只是在你的$rss2變量運行var_dump可以看出,只有$rss2上的財產被稱爲item。我從中得到的結果是,simplexml以某種方式按元素名稱對項目進行分組,並以類似方式將它們以數組形式公開。但是,如果您想了解更多信息,那可能是documented

更清潔地遍歷您的數據,我會建議寫你的for循環foreach ($rss2 as $element_name => $item)$element_name將持有該元素的名稱,即item,這可能是在一個情況有意義您的XML架構允許在根級別的其他元素),儘管foreach ($rss2->item as $item)同樣適用。

0

重寫

foreach ($rss2->xml->item as $item) 

foreach ($rss2->item as $item) 

$ RSS2已經在XML標記水平,它關係到頂層標籤。實際上你說的是「xml - xml - item」,它不存在於你的數據文件中。