2010-01-20 9 views
1

Im essayant d'obtenir des valeurs de l'alimentation xml ci-dessousproblèmes geting valeurs de 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> 

J'ai utilisé le code suivant pour saisir les valeurs

<?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 />"; 
} 
?> 

le problème est que même si j'ai 3 enregistrements dans le xml il montre seulement les premiers résultats. et au début, il donne l'erreur ci-dessous. Quelqu'un peut s'il vous plaît aidez-moi

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 

toute aide sera très appréciée

grâce

Répondre

3

Vous devez regarder la structure du XML plus étroitement et d'accéder aux noeuds dans la base de manière appropriée sur leur hiérarchie.

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

Merci .. Il fonctionne parfaitement: D – LiveEn

+0

@LiveEn: Accepter la réponse si c'est le correct – AntonioCS

+0

Vous êtes les bienvenus. Et puisque vous êtes nouveau sur StackOverflow, il est habituel de voter et/ou "accepter" la réponse qui répond à votre question. Je vous invite à parcourir la FAQ http://stackoverflow.com/faq –

0

Ceci est encore un autre exemple de pourquoi on devrait toujours nommer leurs vars PHP après le nœud qu'ils représentent. De cette façon, vous ne serez pas perdu dans la hiérarchie de votre arbre.

Le noeud racine est <SEARCH/>, sa variable PHP doit donc être $SEARCH. , S'il vous plaît noter également l'utilisation de 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 />"; 
}