2014-05-22 58 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++; 
    } 
}