PHP XML 튜토리얼: 예제를 통해 생성, 구문 분석, 읽기
⚡ 스마트 요약
PHP와 XML은 시스템 간 데이터의 구조화, 저장 및 교환을 위해 함께 작동합니다. 이 가이드에서는 XML, DOM 및 XML 파서에 대해 설명하고, SimpleXML을 사용하여 XML 문서를 읽는 방법과 DOMDocument 클래스를 사용하여 XML 문서를 생성하는 방법을 보여준 다음, 각각의 사용법을 설명합니다.

XML이란 무엇입니까?
XML은 Extensible Markup Language의 약어입니다.
XML은 데이터를 구조화하고 저장하며 한 시스템에서 다른 시스템으로 전송하는 데 사용됩니다.
XML은 HTML과 유사합니다. 둘 다 여는 태그와 닫는 태그를 사용합니다. 하지만 HTML과 달리 XML은 사용자가 자신만의 태그를 정의할 수 있도록 허용합니다.
DOM이란 무엇입니까?
DOM은 Document Object Model의 약자입니다.
이는 플랫폼과 언어에 구애받지 않는 표준으로, 다음과 같은 환경에서 데이터에 접근하고 조작하는 방법을 정의합니다.
- HTML
- XHTML
- XML
DOM XML은 XML 문서에 액세스하고 조작하는 데 사용됩니다. 그것 XML 문서를 봅니다 트리 구조처럼.
XML 파서
XML 파서는 XML 문서를 XML 문서 객체 모델(DOM) 객체로 변환하는 프로그램입니다.
그런 다음 XML DOM 객체를 사용하여 조작할 수 있습니다. Java스크립트, PythonPHP 및 기타 언어.
CDATA라는 키워드는 (파싱되지 않은) 문자 데이터의 약자로, XML 문서를 파싱할 때 "<" 및 ">"와 같은 특수 문자를 무시하는 데 사용됩니다.
XML을 사용하는 이유는 무엇입니까?
- SOAP 및 REST와 같은 웹 서비스는 XML 형식을 사용하여 정보를 교환합니다. 최신 애플리케이션은 웹 서비스를 많이 사용하기 때문에 XML이 무엇이고 어떻게 작동하는지 이해하는 것은 개발자로서 경쟁력을 확보하는 데 도움이 됩니다.
- XML 문서는 애플리케이션의 구성 설정을 저장하는 데 사용할 수 있습니다.
- 이 기능을 사용하면 사용자 지정 태그를 직접 만들 수 있어 더욱 유연하게 사용할 수 있습니다.
XML 문서 예
당신이 개발자라고 가정해 봅시다.ping 웹 서비스에서 XML 형식으로 데이터를 가져오는 애플리케이션.
아래는 XML 문서의 예시입니다.
<?xml version="1.0" encoding="utf-8"?> <employees status = "ok"> <record man_no = "101"> <name>Joe Paul</name> <position>CEO</position> </record> <record man_no = "102"> <name>Tasha Smith</name> <position>Finance Manager</position> </record> </employees>
이리,
- “ "는 사용할 XML 버전과 인코딩을 지정합니다.
- “ ”는 루트 요소입니다.
- “ … ”는 직원 기록당 하나씩 있는 하위 요소입니다.
PHP를 사용하여 XML을 읽는 방법
이제 직원들의 XML 문서를 읽어 웹 브라우저에 결과를 표시하는 코드를 작성해 보겠습니다. index.php
<?php $xml = simplexml_load_file('employees.xml'); echo '<h2>Employees Listing</h2>'; $list = $xml->record; for ($i = 0; $i < count($list); $i++) { echo '<b>Man no:</b> ' . $list[$i]->attributes()->man_no . '<br>'; echo 'Name: ' . $list[$i]->name . '<br>'; echo 'Position: ' . $list[$i]->position . '<br><br>'; } ?>
이리,
- “$xml = simplexml_load_file('employees.xml');”는 simplexml_load_file 함수를 사용하여 employees.xml이라는 파일을 불러와 그 내용을 $xml 변수에 할당합니다.
- "$list = $xml->record;"는 레코드 노드의 내용을 가져옵니다.
- “for ($i = 0; $i < count(…)…”는 배열을 읽고 결과를 출력하는 for 루프입니다.
- "$list[$i]->속성()->man_no;" 요소의 man_no 속성을 읽습니다.
- “$list[$i]->이름;” name 하위 요소의 값을 읽습니다.
- "$list[$i]->위치;" 위치 하위 요소의 값을 읽습니다.
XML 리더 테스트
index.php 파일을 phptuts/xml 폴더에 저장했다고 가정하고, 해당 폴더로 이동하세요. URL http://localhost/phptuts/xml/index.php
PHP를 사용하여 XML 문서를 만드는 방법
이제 PHP를 사용하여 XML 문서를 만드는 방법을 살펴보겠습니다.
다음 코드는 PHP 내장 클래스인 DOMDocument를 사용하여 XML 문서를 생성합니다.
<?php $dom = new DOMDocument(); $dom->encoding = 'utf-8'; $dom->xmlVersion = '1.0'; $dom->formatOutput = true; $xml_file_name = 'movies_list.xml'; $root = $dom->createElement('Movies'); $movie_node = $dom->createElement('movie'); $attr_movie_id = new DOMAttr('movie_id', '5467'); $movie_node->setAttributeNode($attr_movie_id); $child_node_title = $dom->createElement('Title', 'The Campaign'); $movie_node->appendChild($child_node_title); $child_node_year = $dom->createElement('Year', 2012); $movie_node->appendChild($child_node_year); $child_node_genre = $dom->createElement('Genre', 'Comedy'); $movie_node->appendChild($child_node_genre); $child_node_ratings = $dom->createElement('Ratings', 6.2); $movie_node->appendChild($child_node_ratings); $root->appendChild($movie_node); $dom->appendChild($root); $dom->save($xml_file_name); echo "$xml_file_name has been successfully created"; ?>
이리,
- “$dom = new DOMDocument();”는 DOMDocument 클래스의 인스턴스를 생성합니다.
- "$dom->인코딩 = 'utf-8';" 문서 인코딩을 utf-8로 설정합니다.
- "$dom->xmlVersion = '1.0';" 버전 번호 1.0을 지정합니다.
- "$dom->formatOutput = true;" 출력 형식이 올바른지 확인합니다.
- "$root = $dom->createElement('영화');" Movies라는 루트 노드를 생성합니다.
- “$attr_movie_id = new DOMAttr('movie_id', '5467');”는 영화 노드의 movie_id 속성을 정의합니다.
- `$dom->createElement('ElementName', 'ElementValue')`는 자식 노드를 생성합니다. `ElementName`은 요소의 이름(예: Title)을 지정하고, `ElementValue`는 자식 노드의 값(예: The Campaign)을 설정합니다.
- “$root->appendChild($movie_node);”는 영화 노드를 루트 노드 Movies에 추가합니다.
- "$dom->appendChild($root);" XML 문서에 루트 노드를 추가합니다.
- "$dom->저장($xml_file_name);" 웹 서버의 루트 디렉터리에 XML 파일을 저장합니다.
- "echo "$xml_file_name이 성공적으로 생성되었습니다";"는 성공 메시지를 표시합니다.
XML 테스트 Creator
create_movies_list.php 파일을 phptuts/xml 폴더에 저장했다고 가정하고, 해당 폴더로 이동하세요. URL http://localhost/phptuts/xml/create_movies_list.php
movies_list.xml 파일을 엽니다.
SimpleXML과 DOMDocument의 차이점
PHP는 XML을 다루는 두 가지 주요 방법을 제공합니다. SimpleXML은 주로 데이터를 읽는 데 적합하고, DOMDocument는 문서를 구성하고 대폭 수정하는 데 더 세밀한 제어 기능을 제공합니다. 아래 표에서 두 방법을 비교합니다.
| 아래 | SimpleXML을 | DOMDocument |
|---|---|---|
| 사용 용이성 | 아주 간단합니다. 문서가 중첩된 객체처럼 동작합니다. | 더 장황하고 노드 기반 API |
| 가장 좋은 | 읽기 및 간단한 편집 | 문서 생성 및 복잡한 조작 |
| 접근 스타일 | $xml->record->name | createElement() 및 appendChild() |
| XPath 지원 | 네, ->xpath()를 통해 가능합니다. | 예, DOMXPath 클래스를 통해 가능합니다. |
실용적인 규칙은 피드나 간단한 파일을 읽을 때는 SimpleXML을 먼저 사용하고, 문서를 생성하거나 특정 위치에 노드를 삽입하거나 스키마에 대해 유효성을 검사해야 할 때는 DOMDocument로 전환하는 것입니다.



