2014-05-22 79 views
2

我正在構建一些東西,以便我可以從XML文件解析緯度和經度。問題是我有一個具有多個lat和lng(用於google地圖上的標記)座標的用戶,只有第一個座標保存在數組中。我想在數組中有每個座標。它看起來像foreach函數不能正常工作使用json解析xml和php

這裏是ajax調用PHP文件,我解析XML文件。並測試解析的數據是否與json一起工作。

<html> 

<head> 
    <script type="text/javascript" src="jquery-2.1.0.js"></script> 

    <script> 


    $(function() 
    { 
     $.ajax(
      { 
       type:"GET", 
       url:"leesstudent.php", 
       success:callback 
      } 
     ); 
    }); 


    function callback(data,status) 
    { 
     alert(data); 
     var jsArr = JSON.parse(data); 
     var coordinates = new Array(); 
     alert(jsArr[0]); 
     for(var i=0;i<jsArr.length;i++) 
     { 
      $("#message").append("<p>" + jsArr[i].latitude + " " + jsArr[i].longitude + "</p>"); 
     } 
    } 

    </script> 
</head> 

<body> 

<div id="message"> 
    Message.. 
</div> 

</body> 

php文件,我解析XML,從我的觀點在foreach不起作用

$xml = simplexml_load_file("Database.xml"); 
$coordinaten = array(); 
$teller = 0; 
foreach($xml->user as $item) 
{ 
    $coordinaten[$teller]["latitude"] = (string)$item -> latitude; 
    $coordinaten[$teller]["longitude"] = (string)$item -> longitude; 
    $teller++; 
} 
print json_encode($coordinaten); 

XML代碼

<root> 

<user> 
    <username>$2y$11$6SxUsvoDGlwm3Ji6BcnzCu/QyUWNy09Ny/.M9rXIpvImgJ1igJppy</username> 
    <password>$2y$11$6SxUsvoDGlwm3Ji6BcnzCu7hIhAyNKtdlui1.oMdK4gQJnkZrL/Ky</password> 
    <latitude>50.74688365485319</latitude><longitude>5.0701904296875</longitude> 
    <latitude>51.09662294502995</latitude><longitude>4.9713134765625</longitude> 
</user> 

</root> 

我只得到第一個緯度和經度的數據,我希望有兩個(並在未來甚至更多)。

+0

您是否有PHP代碼嘗試解析的XML樣本? –

+0

http://stackoverflow.com/questions/8830599/php-convert-xml-to-json#answer-19391553 –

回答

1

你的foreach循環不正確。 他會循環通過用戶,但從來沒有循環通過你的協調!

foreach($xml->user as $item){ 

    $teller = 0; 
    foreach($item -> latitude as $test) 
    { 
     $coordinaten[$teller]["latitude"] = (string)$test; 
     $teller++; 
    } 

    $teller = 0; 

    foreach($item -> longitude as $test2) 
    { 
     $coordinaten[$teller]["longitude"] = (string)$test2; 
     $teller++; 
    } 
}