현재 위치: > 최신 기사 목록> XML_PARSE 및 DOMXML 기능 라이브러리를 통해 XML 데이터를 구문 분석하는 방법

XML_PARSE 및 DOMXML 기능 라이브러리를 통해 XML 데이터를 구문 분석하는 방법

M66 2025-05-12

최신 웹 애플리케이션 개발에서 XML (확장 가능한 마크 업 언어)은 데이터 교환 형식 중 하나이며 여전히 많은 시나리오에서 널리 사용됩니다. PHP는 XML을 처리하기위한 다양한 기능 라이브러리를 제공하며, 그 중 XML_PARSEDOMXML은 각각 다른 요구에 적합한 두 가지 일반적인 구문 분석 방법입니다. 이 기사는이 두 가지 방법을 개별적으로 소개하고 XML 데이터의 구문 분석 기술을 효율적으로 마스터하는 데 도움이되는 실용적인 코드 예제를 제공합니다.

1. 이벤트 기반 구문 분석에는 XML_PARSE를 사용하십시오

XML_PARSE 는 PHP의 XML 파서 함수이며 이벤트 기반 구문 분석 방법 (색소폰 파싱이라고도 함)에 속합니다. XML 데이터를 읽는 과정에서 특정 콜백 기능을 트리거합니다. 이는 전체 문서를 메모리에로드 할 필요가 없기 때문에 큰 XML 파일을 처리하는 데 적합합니다.

샘플 코드 :

 <?php
$xml_data = <<<XML
<books>
    <book>
        <title>PHP 프로그래밍 연습</title>
        <author>장 산</author>
    </book>
    <book>
        <title>XML 그리고 Web 제공하다</title>
        <author>Li Si</author>
    </book>
</books>
XML;

$parser = xml_parser_create("UTF-8");

function startElement($parser, $name, $attrs) {
    echo "시작 요소:$name\n";
}

function endElement($parser, $name) {
    echo "결말 요소:$name\n";
}

function characterData($parser, $data) {
    $data = trim($data);
    if (!empty($data)) {
        echo "데이터:$data\n";
    }
}

xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");

if (!xml_parse($parser, $xml_data, true)) {
    die("XML 구문 분석 오류:" . xml_error_string(xml_get_error_code($parser)));
}

xml_parser_free($parser);
?>

출력 결과 :

 시작 요소:BOOKS
시작 요소:BOOK
시작 요소:TITLE
데이터:PHP 프로그래밍 연습
결말 요소:TITLE
시작 요소:AUTHOR
데이터:장 산
결말 요소:AUTHOR
결말 요소:BOOK
시작 요소:BOOK
시작 요소:TITLE
데이터:XML 그리고 Web 제공하다
결말 요소:TITLE
시작 요소:AUTHOR
데이터:Li Si
결말 요소:AUTHOR
결말 요소:BOOK
결말 요소:BOOKS

장점 및 적용 가능한 시나리오

  • 장점 : 빠른 파싱 속도와 메모리 사용량이 낮습니다.

  • 적용 가능한 시나리오 : 대형 XML 파일, XML 컨텐츠를 수정하지 않고만 읽어야합니다.

2. DOMXML을 사용하여 문서 개체 모델 (DOM)을 기반으로 분석을 수행하십시오.

DOMXML은 전체 XML 문서를 DOM 트리에로드하여 HTML DOM과 같은 XML 데이터를 조작 할 수있는보다 구조화 된 XML 처리 방법을 제공합니다.

참고 : PHP5이므로 DOMXML은 DOM 확장 (즉, DOMDocument 클래스)으로 대체 되었으며이 기사는 후자의 예를 채택합니다.

샘플 코드 :

 <?php
$xml_string = <<<XML
<books>
    <book>
        <title>PHP 프로그래밍 연습</title>
        <author>장 산</author>
        <link>https://www.m66.net/book/php</link>
    </book>
    <book>
        <title>XML 그리고 Web 제공하다</title>
        <author>Li Si</author>
        <link>https://www.m66.net/book/xml</link>
    </book>
</books>
XML;

$doc = new DOMDocument();
$doc->loadXML($xml_string);

$books = $doc->getElementsByTagName("book");

foreach ($books as $book) {
    $title = $book->getElementsByTagName("title")->item(0)->nodeValue;
    $author = $book->getElementsByTagName("author")->item(0)->nodeValue;
    $link = $book->getElementsByTagName("link")->item(0)->nodeValue;

    echo "책 제목:$title\n";
    echo "작가:$author\n";
    echo "링크:$link\n\n";
}
?>

출력 결과 :

 책 제목:PHP 프로그래밍 연습
작가:장 산
링크:https://www.m66.net/book/php

책 제목:XML 그리고 Web 제공하다
작가:Li Si
링크:https://www.m66.net/book/xml

장점 및 적용 가능한 시나리오

  • 장점 : 명확한 구조 및 작동하기 쉬우 며 XML을 읽고, 수정 및 생성하기에 적합합니다.

  • 해당 시나리오 : 중소형 XML 파일, 구조 수정 또는 새 문서를 작성해야합니다.