PHP

PHP에서 XML 데이터 처리하기

thebasics 2024. 9. 14. 10:00

목차
1. XML이란 무엇인가?
   - XML의 개념과 역할
   - XML의 활용 사례
2. SimpleXML 사용법
   - SimpleXML로 XML 파싱하기
   - SimpleXML로 XML 생성하기
3. DOMDocument를 사용한 XML 파싱 및 생성
   - DOMDocument로 XML 파싱하기
   - DOMDocument로 XML 생성하기
4. 코드 예제
5. 결론 및 추가 학습 자료


1. XML이란 무엇인가?

XML의 개념과 역할

XML(Extensible Markup Language)은 데이터의 구조화와 저장, 전송을 위해 널리 사용되는 마크업 언어입니다. XML은 데이터의 계층적 구조를 표현하는 데 적합하며, 다양한 시스템 간 데이터 교환에 주로 사용됩니다. XML은 HTML과 유사하지만, 데이터의 의미를 정의하고 전달하는 데 더 집중되어 있습니다.

XML의 활용 사례

- 웹 서비스: SOAP와 같은 프로토콜을 통해 XML 형식으로 데이터 교환.
- 구성 파일: 설정 정보를 XML 파일로 저장하여 애플리케이션에서 사용.
- 데이터베이스 데이터 전송: 서로 다른 데이터베이스 시스템 간 데이터 이동에 XML 사용.
- 문서 포맷: Office 문서, SVG 파일 등에서 XML을 기반으로 데이터 구조 정의.


2. SimpleXML 사용법

SimpleXML로 XML 파싱하기

SimpleXML은 PHP에서 XML 데이터를 간편하게 파싱하고 처리할 수 있는 도구입니다. SimpleXML을 사용하면 XML 데이터를 객체 형태로 변환하여 쉽게 접근할 수 있습니다.

<?php
$xmlString = <<<XML
<books>
    <book>
        <title>PHP for Beginners</title>
        <author>John Doe</author>
    </book>
    <book>
        <title>Advanced PHP Programming</title>
        <author>Jane Doe</author>
    </book>
</books>
XML;

$xml = simplexml_load_string($xmlString);

foreach ($xml->book as $book) {
    echo "Title: " . $book->title . "\n";
    echo "Author: " . $book->author . "\n";
}
?>

이 예제에서는 'simplexml_load_string' 함수를 사용하여 XML 문자열을 SimpleXML 객체로 변환한 후, 각 'book' 요소의 'title'과 'author'에 접근하여 출력합니다.

SimpleXML로 XML 생성하기

SimpleXML을 사용하여 XML 문서를 생성할 수도 있습니다. XML 요소와 속성을 쉽게 추가할 수 있으며, XML 문자열로 변환하여 저장하거나 출력할 수 있습니다.

<?php
$xml = new SimpleXMLElement('<books/>');

$book1 = $xml->addChild('book');
$book1->addChild('title', 'PHP for Beginners');
$book1->addChild('author', 'John Doe');

$book2 = $xml->addChild('book');
$book2->addChild('title', 'Advanced PHP Programming');
$book2->addChild('author', 'Jane Doe');

echo $xml->asXML();
?>

이 예제에서는 'SimpleXMLElement' 객체를 사용하여 XML 문서를 생성하고, 'addChild' 메서드를 사용해 요소를 추가한 후 XML 형식으로 출력합니다.


3. DOMDocument를 사용한 XML 파싱 및 생성

DOMDocument로 XML 파싱하기

DOMDocument는 PHP에서 XML 문서를 다루는 또 다른 강력한 도구입니다. DOMDocument는 XML 문서의 구조를 트리 형태로 표현하며, 이를 통해 XML 요소를 탐색하고 수정할 수 있습니다.

<?php
$xmlString = <<<XML
<books>
    <book>
        <title>PHP for Beginners</title>
        <author>John Doe</author>
    </book>
    <book>
        <title>Advanced PHP Programming</title>
        <author>Jane Doe</author>
    </book>
</books>
XML;

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

$books = $dom->getElementsByTagName('book');

foreach ($books as $book) {
    $title = $book->getElementsByTagName('title')->item(0)->nodeValue;
    $author = $book->getElementsByTagName('author')->item(0)->nodeValue;
    echo "Title: " . $title . "\n";
    echo "Author: " . $author . "\n";
}
?>

이 예제에서는 'DOMDocument'를 사용하여 XML 데이터를 로드하고, 'getElementsByTagName' 메서드를 통해 특정 태그를 탐색하여 그 값을 출력합니다.

DOMDocument로 XML 생성하기

DOMDocument를 사용하여 XML 문서를 생성할 수도 있습니다. 이 방법은 더 복잡한 XML 구조를 생성하거나 특정 형식을 유지해야 할 때 유용합니다.

<?php
$dom = new DOMDocument('1.0', 'UTF-8');
$books = $dom->createElement('books');

$book1 = $dom->createElement('book');
$title1 = $dom->createElement('title', 'PHP for Beginners');
$author1 = $dom->createElement('author', 'John Doe');
$book1->appendChild($title1);
$book1->appendChild($author1);

$book2 = $dom->createElement('book');
$title2 = $dom->createElement('title', 'Advanced PHP Programming');
$author2 = $dom->createElement('author', 'Jane Doe');
$book2->appendChild($title2);
$book2->appendChild($author2);

$books->appendChild($book1);
$books->appendChild($book2);
$dom->appendChild($books);

echo $dom->saveXML();
?>

이 예제에서는 'DOMDocument' 객체를 사용하여 XML 문서를 생성하고, 'createElement'와 'appendChild' 메서드를 통해 요소를 추가한 후 XML 문자열로 출력합니다.


4. 코드 예제

다음은 SimpleXML과 DOMDocument를 사용하여 XML 데이터를 처리하는 종합적인 예제입니다.

1. SimpleXML을 사용한 XML 파싱:

<?php
$xmlString = <<<XML
<books>
    <book>
        <title>Learning PHP</title>
        <author>Alice Smith</author>
    </book>
    <book>
        <title>Mastering PHP</title>
        <author>Bob Johnson</author>
    </book>
</books>
XML;

$xml = simplexml_load_string($xmlString);

foreach ($xml->book as $book) {
    echo "Title: " . $book->title . "\n";
    echo "Author: " . $book->author . "\n";
}
?>

2. SimpleXML을 사용한 XML 생성:

<?php
$xml = new SimpleXMLElement('<library/>');

$book = $xml->addChild('book');
$book->addChild('title', 'PHP in Action');
$book->addChild('author', 'Chris Cornell');

$book = $xml->addChild('book');
$book->addChild('title', 'Pro PHP and jQuery');
$book->addChild('author', 'Jason Lengstorf');

echo $xml->asXML();
?>

3. DOMDocument를 사용한 XML 파싱 및 생성:

<?php
$dom = new DOMDocument();
$dom->loadXML('<books><book><title>PHP for Developers</title><author>David Powers</author></book></books>');

$books = $dom->getElementsByTagName('book');

foreach ($books as $book) {
    $title = $book->getElementsByTagName('title')->item(0)->nodeValue;
    $author = $book->getElementsByTagName('author')->item(0)->nodeValue;
    echo "Title: " . $title . "\n";
    echo "Author: " . $author . "\n";
}

// XML 생성
$newBook = $dom->createElement('book');
$newTitle = $dom->createElement('title', 'Advanced XML with PHP');
$newAuthor = $dom->createElement('author', 'John Smith');
$newBook->appendChild($newTitle);
$newBook->appendChild($newAuthor);

$dom->documentElement->appendChild($newBook);
echo $dom->saveXML();
?>

코드 분석:
- 첫 번째 예제에서는 SimpleXML을 사용하여 XML 데이터를 파싱하고 출력합니다.
- 두 번째 예제에서는 SimpleXML을 사용하여 새로운 XML 문서를 생성합니다.
- 세 번째 예제에서는 DOMDocument를 사용하여 XML 데이터를 파싱하고, 새로운 요소를 추가하여 XML 문서를 생성합니다.


5. 결론 및 추가 학습 자료

이번 글에서는 PHP에서 XML 데이터를 처리하는 방법에 대해 알아보았습니다. SimpleXML은 사용하기 쉬운 방법으로 XML 데이터를 파싱하고 생성하는 데 적합하며, DOMDocument는 더 복잡한 XML 구조와 높은 수준의 제어를 요구하는 경우에 유용합니다. 각각의 도구는 특정 상황에서 더 유리할 수 있으므로, 프로젝트의 요구 사항에 맞게 적절한 도구를 선택하는 것이 중요합니다.

추가 학습 자료:
- [PHP 공식 문서 - SimpleXML](https://www.php.net/manual/en/book.simplexml.php) SimpleXML 사용법에 대한 공식 문서입니다.
- [PHP 공식 문서 - DOMDocument](https://www.php.net/manual/en/class.domdocument.php) DOMDocument 클래스를 사용하여 XML을 처리하는 방법을 다룹니다.
- [W3Schools XML 튜토리얼](https://www.w3schools.com/xml/) XML의 기본 개념과 다양한 사용법을 학습할 수 있는 튜토리얼입니다.


이제 PHP에서 XML 데이터를 효율적으로 처리할 수 있습니다. 지속적인 학습과 실습을 통해 XML 관련 기술을 더 깊이 있게 익히고, 실무에 적용해보세요!

 

반응형