2012-05-14 42 views
1

我對php很平庸,對XML無知......如果可以詳細說明它會幫助我學習。如何將XML數據解析爲一個PHP變量

我正在嘗試使用PHP編程來執行腳本到此鏈接... http://ws.geonames.org/postalCodeSearch?postalcode=VARIABLE_ZIP&country=US。 VARIABLE_ZIP是輸入到表單中的實際郵政編碼,它將提交上面鏈接中的信息。該鏈接的輸出創建一個XML頁面,我不想在我的網站上的任何地方顯示。

我想要做的是在PHP中捕獲XML數據的緯度和經度值作爲變量,並將它們存儲到數據庫中。

1)I有一個表格

2)用戶在提交的形式輸入其郵政編碼到表單

3):我想碼來捕獲通過用鏈接生成的XML數據郵政編碼變量補充說:http://ws.geonames.org/postalCodeSearch?postalcode=90210&country=US(我不想要這個頁面顯示的任何地方,我只是想捕獲數據)

4)我想利用這些變量返回的PHP,所以我可以將它們存儲在我的數據庫

*步驟3是一個unkn我自己的過程。 這是XML代碼生成一個單獨的頁面上...(我不想一個頁面來顯示):

= = = = =

<geonames> 
<totalResultsCount>1</totalResultsCount> 
<code><postalcode>90210</postalcode> 
<name>Beverly Hills</name> 
<countryCode>US</countryCode> 
<lat>34.09011</lat> 
<lng>-118.40648</lng> 
<adminCode1>CA</adminCode1> 
<adminName1>California</adminName1> 
<adminCode2>037</adminCode2> 
<adminName2>Los Angeles</adminName2> 
<adminCode3/><adminName3/> 
</code> 
</geonames> 

= = = = =

有人給我提供了下面的,但我不知道如何執行並解析我需要的變量:

<?php 
$pc = $_POST['postalcode']; 
$c = $_POST['country']; 
$xml = file_get_contents("http://ws.geonames.org/postalCodeSearch?postalcode={$pc}&country={$c}"); 
file_put_contents("geopost_{$pc}_{$c}.xml",$xml); 
?> 

謝謝您的幫助!

回答

4

做的最好的事情是怎麼看的XML通過直接導航到該鏈接結構(我用我自己的郵政編碼和國家/地區),然後使用SimpleXMLElement在樹中導航以獲取所需的數據。此示例抓取經緯度:

<?php 
$pc = $_POST['postalcode']; 
$c = $_POST['country']; 
$xml = new SimpleXMLElement(file_get_contents("http://ws.geonames.org/postalCodeSearch?postalcode=".$pc."&country=".$c)); 
$lat = $xml->code->lat; 
$lng = $xml->code->lng; 
echo "Lat: $lat<br/>Lng: $lng"; 
?> 

這應該有助於您開始保存這些值。

+0

這裏有一些有用的閱讀[SimpleXML](http://php.net/manual/en/book.simplexml.php) – maiorano84

+0

非常感謝你! – user1394056

+0

很高興我能幫到你。請標記爲已回答,如果您再次需要,我一定會嘗試並提供幫助。 – maiorano84