Programming/PHP

[PHP] #14 PHP로 XML 응답 처리 하는 방법, 외부 데이터 읽기 및 파싱 가이드!

TOASTDEV 2025. 7. 25. 16:00
반응형

 

 

안녕하세요, 토스트 데브입니다!
API 요청이나 외부 시스템과 연동할 때 XML로 응답을 받는 경우가 종종 있습니다.
이번 글에서는 PHP에서 XML 데이터를 받아서 처리(파싱)하는 방법을 알아보겠습니다.

 

 

✅ XML이란?

XML(eXtensible Markup Language)은 데이터 구조를 표현하기 위한 마크업 언어입니다.
HTML처럼 태그로 구성되지만, 사용자 정의 태그를 사용할 수 있어 시스템 간 데이터 교환에 많이 사용됩니다.

<user>
  <name>토스트</name>
  <email>toast@example.com</email>
</user>

 

 

✅ PHP에서 XML 응답 처리 방법

PHP에는 XML을 파싱할 수 있는 여러 기능이 내장되어 있습니다.
대표적으로 두 가지 방법이 있습니다.

 

🔹 1. SimpleXML 사용 (가장 간단한 방법)

<?php
$xmlString = <<<XML
<user>
  <name>토스트</name>
  <email>toast@example.com</email>
</user>
XML;

$xml = simplexml_load_string($xmlString);

echo "이름: " . $xml->name . "<br>";
echo "이메일: " . $xml->email;
?>

📌 simplexml_load_string()은 문자열 형태의 XML을 객체처럼 쉽게 접근할 수 있도록 변환해줍니다.

 

📥 외부 파일 또는 API 응답 처리 예시

$xml = simplexml_load_file("https://example.com/data.xml");

foreach ($xml->item as $item) {
  echo $item->title . "<br>";
}

 

🔹 2. DOMDocument 사용 (정교한 처리에 적합)

<?php
$xmlString = <<<XML
<user>
  <name>토스트</name>
  <email>toast@example.com</email>
</user>
XML;

$dom = new DOMDocument();
$dom->loadXML($xmlString);

$name = $dom->getElementsByTagName("name")->item(0)->nodeValue;
$email = $dom->getElementsByTagName("email")->item(0)->nodeValue;

echo "이름: $name<br>";
echo "이메일: $email";
?>

📌 DOMDocument는 XML을 노드 단위로 정밀하게 제어할 수 있어 복잡한 구조를 다룰 때 유리합니다.

 

 

✅ XML 응답이 API에서 올 때

XML 응답을 받을 땐 보통 file_get_contents() 또는 cURL을 통해 데이터를 요청합니다.

예: file_get_contents()로 XML API 불러오기

$url = "https://example.com/api/user.xml";
$response = file_get_contents($url);
$xml = simplexml_load_string($response);

echo $xml->name;
외부 요청에는 보안 설정(allow_url_fopen, HTTPS 인증 등)도 함께 고려해야 합니다.

 

 

✅ XML 처리 시 주의사항

항목 설명
특수 문자 &, <, > 등은 XML 규칙에 맞게 인코딩 필요
인코딩 UTF-8로 인코딩 여부 확인 (<?xml version="1.0" encoding="UTF-8"?>)
에러 처리 libxml_use_internal_errors(true) 설정으로 에러 핸들링 가능

 

 

✨ 마무리 요약

✔ PHP는 XML 파싱 기능이 기본 내장되어 있음
✔ SimpleXML은 간단하고 빠르게 사용 가능
✔ DOMDocument는 정교하고 복잡한 구조에 유리
✔ API 응답이 XML일 경우 file_get_contents()나 cURL로 받아 파싱

 

XML은 JSON보다 다소 무겁지만, 여전히 금융, 공공데이터, 레거시 시스템에서 많이 사용되고 있습니다.
PHP에서도 어렵지 않게 XML을 다룰 수 있으니 상황에 맞게 활용해보세요!

 

 

#PHPXML #XML파싱 #SimpleXML #DOMDocument #XML응답처리 #웹개발 #API연동 #PHP기초 #PHP강의 #PHP데이터처리 #toastdev #XML분석 #웹서비스개발

 

반응형