PHP에서 XML 문서를 배열로 변환하려면 PHP의 내장 함수들을 조합하여 사용해야 합니다. 이 과정은 file_get_contents(), simplexml_load_string(), json_encode(), json_decode() 함수를 순서대로 활용하며, 아래 예시와 함께 단계별로 자세히 설명합니다.
1단계: XML 파일 준비
먼저 배열로 변환할 XML 파일을 생성해야 합니다. 아래와 같은 간단한 사용자 정보 XML 파일을 예로 들어보겠습니다.
abc.xml
<?xml version='1.0'?>
<userdb>
<firstname name='Alex'>
<symbol>AL</symbol>
<code>A</code>
</firstname>
<firstname name='Sandra'>
<symbol>SA</symbol>
<code>S</code>
</firstname>
</userdb>2단계: file_get_contents()로 XML 파일 읽기
준비된 XML 파일은 file_get_contents() 함수를 사용하여 PHP로 불러옵니다. 이 함수는 파일 전체 내용을 하나의 문자열(string) 형태로 읽어 들여 변수에 저장합니다.
3단계: simplexml_load_string()으로 객체 변환
문자열로 읽어온 XML 데이터는 PHP의 내장 함수인 simplexml_load_string()을 통해 손쉽게 객체(object) 형태로 변환할 수 있습니다. 이 객체는 SimpleXML 확장 모듈이 제공하며, XML 요소에 객체 지향 방식으로 접근할 수 있게 해줍니다.
4단계: json_encode()로 JSON 문자열 생성
다음으로 json_encode() 함수를 사용하여 앞서 만든 객체를 JSON 인코딩된 문자열로 표현합니다. 이 과정이 필요한 이유는 JSON 형식을 거치는 것이 PHP에서 복잡한 구조의 데이터를 배열로 변환하는 가장 간편한 방법이기 때문입니다.
5단계: json_decode()로 최종 배열 생성
마지막으로 json_decode() 함수가 JSON 문자열을 디코딩합니다. 두 번째 매개변수를 true로 지정하면 결과가 연관 배열(associative array) 형태로 반환되며, 이것이 바로 우리가 원하는 PHP 배열입니다.
전체 예제 코드
아래는 위의 모든 단계를 하나의 코드로 정리한 완전한 예제입니다.
<?php // XML 파일 경로 $path = "abc.xml"; $xmlfile = file_get_contents($path); $new = simplexml_load_string($xmlfile); $jsonfile = json_encode($new); $myarray = json_decode($jsonfile, true); print_r($myarray); ?>
실행 결과
위 코드를 실행하면 다음과 같이 XML 데이터가 PHP 배열로 출력됩니다.
Array
(
[firstname] => Array
(
[0] => Array
(
[@attributes] => Array
(
[name] => Alex
)
[symbol] => AL
[code] => A
)
[1] => Array
(
[@attributes] => Array
(
[name] => Sandra
)
[symbol] => SA
[code] => S
)
)
)정리
PHP에서 XML을 배열로 변환하는 핵심 흐름은 다음과 같습니다.
XML 파일 → file_get_contents() → simplexml_load_string() → json_encode() → json_decode() → PHP 배열
이 방법은 코드가 간결하고 추가 라이브러리 설치 없이 PHP 기본 함수만으로 구현할 수 있다는 장점이 있습니다. 다만 대용량 XML 파일을 처리할 때는 메모리 사용량에 유의해야 하며, 그런 경우에는 XMLReader 같은 스트리밍 방식의 파서를 고려하는 것이 좋습니다.