2010-01-20 65 views
1

我試着從下面的XML提要問題從XML歌廳值

<?xml version="1.0" ?> 
<SEARCH> 
    <LOCATION> 
    <NAME>Terrance</NAME> 
    <COUNTRY>USA</COUNTRY> 
    </LOCATION> 
<FOUND> 
    <TOTALOFOUND> 
    <TOTAL>3</TOTAL> 
    </TOTALOFOUND> 
    <PLACE> 
     <ADDRESS>IL Road</ADDRESS> 
     <NAME>shop1</NAME> 
     <POSTCODE>5</POSTCODE> 
    <CATIM> 
     <SMALL>ILR.jpg</SMALL> 
     <MEDIUM>ILR1.jpg</MEDIUM> 
     <DESCRIPTION>feeds</DESCRIPTION> 
    </CATIM> 
    <BUILD>this is the first test xml feed</BUILD> 
    <ID>1235</ID> 
    <DIST> 
    <LAT>25</LAT> 
    <LONG>547</LONG> 
    </DIST> 
    </PLACE> 
    <PLACE> 
     <ADDRESS>Peter Road</ADDRESS> 
     <NAME>textas</NAME> 
     <POSTCODE>987</POSTCODE> 
    <CATIM> 
     <SMALL>test.jpg</SMALL> 
     <MEDIUM>test1.jpg</MEDIUM> 
     <DESCRIPTION>feeds new</DESCRIPTION> 
    </CATIM> 
    <BUILD>this is the second test xml feed</BUILD> 
    <ID>1235</ID> 
    <DIST> 
    <LAT>25</LAT> 
    <LONG>547</LONG> 
    </DIST> 
    </PLACE> 
    <PLACE> 
     <ADDRESS>Thsi is the 3rd st</ADDRESS> 
     <NAME>utah</NAME> 
     <POSTCODE>9117</POSTCODE> 
    <CATIM> 
     <SMALL>utah.jpg</SMALL> 
     <MEDIUM>utah1.jpg</MEDIUM> 
     <DESCRIPTION>feeds new 3</DESCRIPTION> 
    </CATIM> 
    <BUILD>this is the third test xml feed</BUILD> 
    <ID>000000</ID> 
    <DIST> 
    <LAT>000</LAT> 
    <LONG>54000</LONG> 
    </DIST> 
    </PLACE> 
</FOUND> 
</SEARCH> 

我用下面的代碼來獲取價值得到一些價值

<?php 
strings = file_get_contents("feed.xml"); 
$xml=simplexml_load_string($strings); 

foreach ($xml as $place) 
{ 
echo "Total : ".$place->TOTALOFOUND->TOTAL."<br />"; 
echo "address: ".$place->PLACE->ADDRESS."<br />"; 
echo "Name : ".$place->PLACE->NAME."<br />"; 
echo "post code: ".$place->PLACE->POSTCODE."<br />"; 
echo "Small image: ".$place->PLACE->CATIM->SMALL."<br />"; 
echo "Medium Image: ".$place->PLACE->CATIM->MEDIUM."<br />"; 
echo "Descripton: ".$place->PLACE->CATIM->DESCRIPTION."<br />"; 
echo "Office ID: ".$place->PLACE->ID."<br />"; 
echo "Cord Lat: ".$place->PLACE->DIST->LAT."<br />"; 
echo "Cord Long: ".$place->PLACE->DIST->LONG."<br />"."<br />"; 
} 
?> 

的問題是,雖然我有3個記錄在xml中只顯示第一個結果。並在開始時給出下面的錯誤。有人可以幫我

Total : 
address: 
Name : 
post code: 

Notice: Trying to get property of non-object in C:\wamp\www\site\test.php on line 16 
Small image: 

Notice: Trying to get property of non-object in C:\wamp\www\site\test.php on line 17 
Medium Image: 
Descripton: 
Office ID: 

Notice: Trying to get property of non-object in C:\wamp\www\site\test.php on line 20 
Cord Lat: 

Notice: Trying to get property of non-object in C:\wamp\www\site\test.php on line 21 
Cord Long: 

Total : 3 
address: IL Road 
Name : shop1 
post code: 5 
Small image: ILR.jpg 
Medium Image: ILR1.jpg 
Descripton: 
Office ID: 1235 
Cord Lat: 25 
Cord Long: 547 

任何幫助將非常感激

感謝

回答

3

你必須在XML的結構更加緊密地尋找並訪問節點的適當方法基礎上,他們的等級。

echo "Total : ".$xml->FOUND->TOTALOFOUND->TOTAL."<br />"; 
foreach ($xml->FOUND->PLACE as $place) 
{ 
    echo "address: ".$place->ADDRESS."<br />"; 
    echo "Name : ".$place->NAME."<br />"; 
    echo "post code: ".$place->POSTCODE."<br />"; 
    echo "Small image: ".$place->CATIM->SMALL."<br />"; 
    echo "Medium Image: ".$place->CATIM->MEDIUM."<br />"; 
    echo "Descripton: ".$place->CATIM->DESCRIPTION."<br />"; 
    echo "Office ID: ".$place->ID."<br />"; 
    echo "Cord Lat: ".$place->DIST->LAT."<br />"; 
    echo "Cord Long: ".$place->DIST->LONG."<br />"."<br />"; 
} 
+0

謝謝。的它完美:d – LiveEn

+0

@LiveEn:接受的答案,如果它是正確的 – AntonioCS

+0

不客氣。而且由於您是StackOverflow的新手,因此習慣上投票和/或「接受」回答您的問題的回覆。我邀請您仔細閱讀FAQ http://stackoverflow.com/faq –

0

這是又一個例子,說明爲什麼一個人總是要在他們代表的節點後面命名他們的PHP變量。這樣,你不會迷失在你的樹的層次結構中。

根節點爲<SEARCH/>,因此其PHP變量應爲$SEARCH。另外,請注意使用使用simplexml_load_file()

$SEARCH = simplexml_load_file('feed.xml'); 

echo "Total : ".$SEARCH->FOUND->TOTALOFOUND->TOTAL."<br />"; 

foreach ($SEARCH->FOUND->PLACE as $PLACE) 
{ 
    echo "address: ".$PLACE->ADDRESS."<br />"; 
    // etc... 
    echo "Cord Lat: ".$PLACE->DIST->LAT."<br />"; 
}