2012-02-17 48 views
2

我有一個XML流解析爲SimpleXMLElement對象,我嘗試遍歷可用記錄以用作PHP頁面中的值。如何遍歷SimpleXMLElement對象的XML值

[列表]的父節點當前存在兩次,因爲測試XML中有兩條記錄(列表[0]和列表[1]) 但我無法讓它像「Basic SimpleXML使用」從PHP手冊

<?php 
    $xml = simplexml_load_file('http://feed.postlets.com/Burndog/6458ec1af54f632'); 

這個工程提供首批上市的標題元素值:

$value1 = $xml->listing[0]->title; 
    echo ' here:' . $value1; 

這無法通過可用值迭代:

從print_r的
foreach ($xml->listing->title as $title) { 
    echo $title; 
    } 
    ?> 

值:

SimpleXMLElement Object 
(
[listing] => Array 
    (
     [0] => SimpleXMLElement Object 
      (
       [url] => http://www.postlets.com/repb/6509636 
       [title] => 3BR/2BA Manufactured - Beaumont 
       [subtitle] => SimpleXMLElement Object 
        (
        ) 

       [description] => SimpleXMLElement Object 
        (
        ) 

       [location] => SimpleXMLElement Object 
        (
         [street] => 1415 E 6th St 
         [city] => Beaumont 
         [zipcode] => 92223 
         [state] => CA 
         [latitude] => 33.928326 
         [longitude] => -116.959923 
         [walkscore] => 46 
        ) 

       [details] => SimpleXMLElement Object 
        (
         [money] => SimpleXMLElement Object 
          (
           [price] => 44900 
          ) 

         [property_for] => Sale 
         [property_use] => Residential 
         [property_type] => Manufactured 
         [year_built] => 2011 
         [bedrooms] => 3 
         [full_bathrooms] => 2 
         [partial_bathrooms] => 0 
         [sqft] => 1041 
         [lot_size] => 1045 sqft 
         [parking] => SimpleXMLElement Object 
          (
          ) 

        ) 

       [photos] => SimpleXMLElement Object 
        (
         [photo_1] => http://www.postlets.com/create/photos/20111101/082821_6509636_158803034.jpg 
         [photo_caption_1] => Photo 1 
         [photo_2] => http://www.postlets.com/create/photos/20111101/082822_6509636_3416721218.jpg 
         [photo_caption_2] => Photo 2 
         [photo_3] => http://www.postlets.com/create/photos/20111101/082822_6509636_1298858591.jpg 
         [photo_caption_3] => Photo 3 
        ) 

       [contact] => SimpleXMLElement Object 
        (

        ) 

      ) 

     [1] => SimpleXMLElement Object 
      (
       [url] => http://www.postlets.com/repb/7066849 
       [title] => 2BR/1+1BA Manufactured - Beaumont 
       [subtitle] => SimpleXMLElement Object 
        (
        ) 

       [description] => SimpleXMLElement Object 
        (
        ) 

       [location] => SimpleXMLElement Object 
        (
         [street] => 1415 E 6th St # 12 
         [city] => Beaumont 
         [zipcode] => 92223 
         [state] => CA 
         [latitude] => 33.929199 
         [longitude] => -116.959831 
         [walkscore] => 46 
        ) 

       [details] => SimpleXMLElement Object 
        (
         [money] => SimpleXMLElement Object 
          (
           [price] => 56000 
           [hoa] => 400 
          ) 

         [property_for] => Sale 
         [property_use] => Residential 
         [property_type] => Manufactured 
         [year_built] => 1997 
         [bedrooms] => 2 
         [full_bathrooms] => 1 
         [partial_bathrooms] => 1 
         [sqft] => 1250 
         [lot_size] => 3000 sqft 
         [property_features] => Central A/C, Dining room, Breakfast nook, Dryer 
         [community_features] => Covered parking 
         [parking] => SimpleXMLElement Object 
          (
          ) 

        ) etc etc 

那麼怎麼做才能遍歷用於圖片的元素,有不止一個? 謝謝!

+0

這可能幫助:HTTP: //stackoverflow.com/q/871422/351893 – JochenJung 2014-03-06 15:09:08

回答

5

正如你可以在你的print_r輸出中看到的那樣,XML-Object的'listing'字段是數組,而不是標題。所以,你必須做的是通過迭代列表並打印出每個列表標題:

foreach ($xml->listing as $listing) 
{ 
    echo $listing->title; 
} 

要打印出來的圖片你會做這樣的事情:

foreach ($xml->listing as $listing) 
{ 
    echo "Title: " . $listing->title . "<br>"; 

    foreach ($listing->photos->children() as $child) 
    { 
     echo $child . "<br>"; 
    } 
} 
+0

你的第一個的foreach完美的作品... 第二呈現: 照片=>照片=> 我會進一步研究它作爲你的價值觀可能只是陳述和我需要插入實際的字段值。 – Burndog 2012-02-17 00:56:50

+0

編輯與替代,希望它有幫助。 – ccKep 2012-02-17 01:12:27

+0

ccKep,您的foreach的結果產生: 標題:3BR/2BA製造 - 博蒙特 的照片數量:0.5 標題:2房/ 1 + 1BA製造 - 博蒙特 的照片數量:0.5 – Burndog 2012-02-17 19:33:58