반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 받은 트랙백

글 보관함

PHP로 XML , JSON 다루기

2012. 8. 24. 05:14 | Posted by 솔웅


일하다가 동료가 처리할 데이터가 있는데 이 데이터를 어떻게 관리했으면 좋겠냐고 물어보더라구요.


XML 로 관리할지 JSON으로 관리 할지.....

저희 시스템은 PHP로 돼 있거든요.


그래서 일단은 JSON이 가장 가벼우니까 데이터를 파일로 관리하면 JSON으로 관리하는 법도 생각해 볼 수 있겠지만 데이터도 많지 않고 바뀌지도 않을 거고 그냥 a 가 1인 경우의 b 값을 화면에 출력만 하면 되니까 디비에 넣어서 관리하는게 제일 편하지 않을까 의견을 주었습니다.


다른 시스템간에 데이터를 인터페이스 할 것도 아니고....


하여간 그래도 그 얘기 듣고 PHP로 XML과 JSON을 처리하려면 어떻게 해야 하는지 그 구체적인 소스가 궁금해서 써핑 해 봤습니다.


* PHP 로 XML 다루기


<?xml version="1.0" encoding="utf-8"?>
<data>
    <total> 2 </total>
    <item>
        <name> Raj </name>
        <phone> 123456789 </phone>
        <age> 17 </age>
    </item>
    <item>
        <name> Akshay </name>
        <phone> 987654321 </phone>
        <age> 15 </age>
    </item>
</data>


이런 xml 데이터가 있을 때 php 코드는 아래와 같으면 됩니다.


<?php
 $xml_string = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/data.xml');
 $xml = simplexml_load_string($xml_string);
 echo $xml->total . "<p>"; //2
 echo $xml->item[0]->name . "<p>";       // Raj
 echo $xml->item[0]->phone . "<p>";        // 123456789
 echo $xml->item[0]->age . "<p>";        // 17
 echo $xml->item[1]->name . "<p>";        // Akshay
 echo $xml->item[1]->phone . "<p>";         // 987654321
 echo $xml->item[1]->age;        // 15
?>


먼저 file_get_contents 로 data.xml 파일에 있는 모든 내용을 긁어 옵니다.

그러면 $xml_string 변수에 배열로 그 내용들이 담길 겁니다.


그 다음에는 복잡하게 코딩할 필요 없이 그냥 simplexml_load_string() 메소드를 사용하시면 됩니다.


그 안의 내용을 처리하는 방법은 $xml-> 다음에 원하는 내용이 있는 태그를 사용하면 됩니다.

total 은 한번만 있으니까 곧바로 얻어오고 그 다음 item 은 계속 반복되는 태그이니까 배열불러오듯이 불러오면 됩니다.


아래 샘플 파일 올려놓겠습니다.


data.xml


xml.php





* PHP 로 JSON 다루기


아래 코드도 어디에선가 긁어 온 건데요.


for(){
  $str[] = array('code'=>$bbs_no,'table'=>$table_type);
}

----------------------
code[0]      table[0]
code[1]      table[1]
----------------------

이렇게 데이터들이 담길 겁니다.

$jsonStr = json_encode($str); // ******* Make Json from array ********
<input type="hidden" name="json_list" id="json_list" value=$jsonStr  /> // Send Form


유저로부터 데이터를 입력받아서 이것을 json으로 encode 한 겁니다.


그러면 이 json 값을 한꺼번에 form 테그에서 send 할 수가 있습니다.


그 다음 받는 파일에서는 아래와 같이 처리하면 됩니다.


$json_list = $_REQUEST['json_list']; //get Form
$json_list = str_replace('\\', '', $json_list);
json_list= json_decode($json_list, true); // Decode json
echo $json_list[0]['code'];
echo $json_list[1]['table'];


간단하네요.


나중에 유용하게 사용될 수 있을 것 같습니다.


반응형

Comment

  1. 야생 2012.09.08 19:19

    감사합니다. 덕분에 잘 배우고 갑니다 ^^