2010-01-15 4 views
2

je le fichier XML suivant:question de lecture XML simple (PHP)

<?xml version="1.0" encoding="utf-8"?> 
<SearchResults:searchresults xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.zillow.com/static/xsd/SearchResults.xsd /vstatic/279989c5e93d519f8d8f23d3f6cac661/static/xsd/SearchResults.xsd" xmlns:SearchResults="http://www.zillow.com/static/xsd/SearchResults.xsd"> 

<request> 
<address>2114 Bigelow Ave</address> 
<citystatezip>Seattle, WA</citystatezip> 
</request> 

<message> 
<text>Request successfully processed</text> 

<code>0</code> 

</message> 


<response> 
<results> 

<result> 
<zpid>48749425</zpid> 
<links> 

<homedetails>http://www.zillow.com/homedetails/2114-Bigelow-Ave-N-Seattle-WA-98109/48749425_zpid/</homedetails> 

<graphsanddata>http://www.zillow.com/homedetails/charts/48749425_zpid,1year_chartDuration/?cbt=3697699817560038867%7E3%7EQh4sEjEhBNEguUWA-0f22TvGUpBB7FpUkAZlBRy5_26R5PYjKDdVAA**</graphsanddata> 

<mapthishome>http://www.zillow.com/homes/48749425_zpid/</mapthishome> 

<myestimator>http://www.zillow.com/myestimator/Edit.htm?zprop=48749425</myestimator> 
<myzestimator deprecated="true">http://www.zillow.com/myestimator/Edit.htm?zprop=48749425</myzestimator> 

<comparables>http://www.zillow.com/homes/comps/48749425_zpid/</comparables> 

</links> 
<address> 
<street>2114 Bigelow Ave N</street> 
<zipcode>98109</zipcode> 
<city>Seattle</city> 
<state>WA</state> 
<latitude>47.63793</latitude> 

<longitude>-122.347936</longitude> 
</address> 


<zestimate> 
<amount currency="USD">1112500</amount> 
<last-updated>01/14/2010</last-updated> 


<oneWeekChange deprecated="true"></oneWeekChange> 


<valueChange duration="30" currency="USD">-77500</valueChange> 



<valuationRange> 
<low currency="USD">878875</low> 
<high currency="USD">1145875</high> 
</valuationRange> 
<percentile>0</percentile> 
</zestimate> 
<localRealEstate> 


<region id="271856" type="neighborhood" name="East Queen Anne"> 

<zindexValue>525,252</zindexValue> 
<zindexOneYearChange>-0.104</zindexOneYearChange> 

<links> 
<overview>http://www.zillow.com/local-info/WA-Seattle/East-Queen-Anne/r_271856/</overview> 
<forSaleByOwner>http://www.zillow.com/homes/fsbo/East-Queen-Anne-Seattle-WA/</forSaleByOwner> 
<forSale>http://www.zillow.com/homes/for_sale/East-Queen-Anne-Seattle-WA/</forSale> 

</links> 
</region> 

<region id="16037" type="city" name="Seattle"> 

<zindexValue>373,795</zindexValue> 
<zindexOneYearChange>-0.064</zindexOneYearChange> 

<links> 
<overview>http://www.zillow.com/local-info/WA-Seattle/r_16037/</overview> 

<forSaleByOwner>http://www.zillow.com/homes/fsbo/Seattle-WA/</forSaleByOwner> 
<forSale>http://www.zillow.com/homes/for_sale/Seattle-WA/</forSale> 
</links> 
</region> 

<region id="59" type="state" name="Washington"> 

<zindexValue>256,760</zindexValue> 
<zindexOneYearChange>-0.074</zindexOneYearChange> 


<links> 
<overview>http://www.zillow.com/local-info/WA-home-value/r_59/</overview> 
<forSaleByOwner>http://www.zillow.com/homes/fsbo/WA/</forSaleByOwner> 
<forSale>http://www.zillow.com/homes/for_sale/WA/</forSale> 
</links> 
</region> 

</localRealEstate> 

</result> 

</results>   
</response> 

</SearchResults:searchresults> 
<!-- H:118 T:102ms S:1761 R:Fri Jan 15 10:52:49 PST 2010 B:3.0.79367-comp_rel_b --> 

Si vous ne pouvez pas dire déjà, il est la sortie standard de l'API Zillow. Je veux stocker les données d'informations stockées entre certaines balises, que j'ai appris est interrogé à travers le xpath.

Par exemple, comment rechercher les données dans/SearchResults: searchresults/request/address? Faire quelque chose comme ça ne fonctionne pas lorsque je fais écho/impression variable:

$xml = simplexml_load_file("-truncated XML URL-"); 
$result = $xml->xpath('/SearchResults:searchresults/request/address') 

D'après ce que je comprends, la variable $ result doit contenir la valeur trouvée imbriquée dans cette valeur% ICI%, correct? Mais il imprime "Array", et quand je print_r, il retourne vide.

Répondre

2

Voici un moyen simple d'obtenir cette information:

<?php 
    $xml = simplexml_load_file("test.xml"); 
    echo $xml->request->address; 
?> 
+1

Merci, ceci fonctionne super! Je n'étais pas au courant de la méthode simple d'obtenir l'information XML à travers seulement $ xml-> Merci beaucoup! – dmanexe

1

Vous devez utiliser l'espace de nom complet et non le nom abrégé.

+0

Alors, quel serait mon regard de requête comme, y compris l'espace de noms? – dmanexe

+0

'$ xml-> xpath ('/SearchResults:http://www.zillow.com/static/xsd/SearchResults.xsd/request/address')'. – prodigitalson

-2

Utilisez http://simplepie.org

$xml = "yourxml code here"; 

$feed = new SimplePie(); 
$feed->set_raw_data($xml); 
$feed->init(); 
$feed->handle_content_type(); 
echo $feed->get_adress();