PHP에서 XML 파일을 출력하는 방법
PHP에서는 래퍼(Wrapper)를 활용하면 HTTP URL을 마치 로컬 파일처럼 다룰 수 있습니다. 덕분에 원격 서버에 있는 XML 파일의 내용도 별도의 복잡한 처리 없이 간단히 가져와서 화면에 출력할 수 있습니다.
대표적인 방법은 크게 세 가지로 정리할 수 있습니다.
1. file_get_contents() 함수 사용
file_get_contents() 함수는 URL의 전체 내용을 문자열로 가져오며, 이를 echo로 그대로 출력하면 됩니다. 가장 직관적이고 널리 쓰이는 방식입니다.
$file = file_get_contents('https://example.com/');
echo $file;2. readfile() 함수 사용
readfile() 함수를 사용하면 파일 내용을 가져오는 과정 없이 곧바로 출력 버퍼에 쓸 수 있어 더 간결합니다.
단, 주의할 점이 있습니다. XML 문서가 브라우저에서 올바르게 해석되도록 하려면 출력이 시작되기 전에 반드시 올바른 MIME 타입을 헤더로 지정해야 합니다. header() 함수는 어떤 출력보다 먼저 호출되어야 하므로 아래와 같이 순서를 지키는 것이 좋습니다.
header('Content-type: text/xml'); // 출력 전에 올바른 MIME 타입을 설정해야 합니다.
readfile('https://example.com/');3. SimpleXML의 asXML() 메소드 사용
SipleXML 객체로 파싱된 XML 데이터를 다루고 있다면 asXML() 메소드를 활용할 수 있습니다. 이 메소드는 XML 트리를 문자열로 반환하거나, 파일명을 인자로 넘기면 해당 이름의 XML 파일로 직접 저장할 수도 있습니다.
// XML 내용을 화면에 출력
echo $xml->asXML();
// 또는 XML 파일로 저장
$xml->asXML('filename.xml');마무리
단순히 원격 XML 내용을 그대로 보여주는 것이 목적이라면 readfile(), 내용을 가공하거나 변수로 활용해야 한다면 file_get_contents(), 이미 파싱된 XML 객체가 있다면 asXML()을 사용하는 것이 효율적입니다. 상황에 맞는 방법을 선택해 사용하시기 바랍니다.