2014-05-22 4 views
2

XML 파일에서 위도와 경도를 파싱 할 수 있도록 무언가를 만들고 있습니다. 문제는 여러 lat 및 lng (Google지도의 마커에 사용) 좌표를 가진 사용자가 있고 첫 번째 좌표 만 배열에 저장된다는 것입니다. 배열의 모든 좌표를 갖고 싶습니다. foreach 함수가 제대로 작동하지 않는 것 같습니다.json을 사용하여 xml을 PHP로 파싱

다음은 xml 파일을 구문 분석하는 php 파일에 대한 ajax 호출입니다. 또한 파싱 된 데이터가 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> 

내가 XML을 구문 분석 PHP 파일, 내 의견에서 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++; 
    } 
} 
관련 문제