현재 위치: > 최신 기사 목록> XML을 통해 XML_PARSE의 속성 및 텍스트 내용 추출 및 구문 분석

XML을 통해 XML_PARSE의 속성 및 텍스트 내용 추출 및 구문 분석

M66 2025-04-24

XML 데이터를 처리 할 때 PHP는 PHP의 XML 파서 (국외 거주자)에 속하는 XML_PARSE () 함수 인 강력한 도구를 제공합니다. 이 기사에서는이 기능을 사용하여 XML 파일을 구문 분석하고 속성 값 및 텍스트 내용을 추출하는 방법을 소개합니다.

1. XML 데이터를 준비하십시오

Sample.xml 이라는 다음 XML 파일이 있다고 가정합니다.

 <?xml version="1.0" encoding="UTF-8"?>
<articles>
    <article id="101" author="Alice">
        <title>PHP XML분석 튜토리얼</title>
        <url>https://m66.net/articles/php-xml</url>
    </article>
    <article id="102" author="Bob">
        <title>심층적 인 이해DOMDocument</title>
        <url>https://m66.net/articles/domdocument</url>
    </article>
</articles>

우리의 목표는 ID , 저자 속성 및 각 기사의 제목 및 링크를 구문 분석하는 것입니다.

2. XML_PARSE를 사용하여 XML을 구문 분석하십시오

XML_PARSE () 는 낮은 수준의 XML 구문 분석 기능입니다. 사용하면 xml_set_element_handler ()xml_set_character_data_handler ()를 결합해야합니다.

샘플 코드 :

 <?php

$xml = file_get_contents('sample.xml');

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

// 현재 요소 이름을 저장하십시오
$currentTag = '';
// 기사 데이터를 저장하십시오
$articles = [];
$currentArticle = [];

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

function startElement($parser, $name, $attrs) {
    global $currentTag, $currentArticle, $articles;

    $currentTag = strtolower($name);

    if ($currentTag === 'article') {
        // 새 기사를 초기화하십시오
        $currentArticle = [
            'id' => $attrs['ID'] ?? '',
            'author' => $attrs['AUTHOR'] ?? '',
            'title' => '',
            'url' => ''
        ];
    }
}

function endElement($parser, $name) {
    global $currentTag, $currentArticle, $articles;

    if (strtolower($name) === 'article') {
        $articles[] = $currentArticle;
    }

    $currentTag = '';
}

function characterData($parser, $data) {
    global $currentTag, $currentArticle;

    $data = trim($data);
    if (!$data) return;

    if ($currentTag === 'title') {
        $currentArticle['title'] .= $data;
    } elseif ($currentTag === 'url') {
        $currentArticle['url'] .= $data;
    }
}

// 구문 분석을 시작하십시오
if (!xml_parse($parser, $xml, true)) {
    die("XML Error: " . xml_error_string(xml_get_error_code($parser)));
}

xml_parser_free($parser);

// 출력 분석 결과
foreach ($articles as $article) {
    echo "기사 ID: " . $article['id'] . PHP_EOL;
    echo "작가: " . $article['author'] . PHP_EOL;
    echo "제목: " . $article['title'] . PHP_EOL;
    echo "링크: " . $article['url'] . PHP_EOL;
    echo str_repeat('-', 40) . PHP_EOL;
}

?>

3. 분석 결과의 예

위 코드를 실행하면 출력이 다음과 같습니다.

 기사 ID: 101
작가: Alice
제목: PHP XML분석 튜토리얼
링크: https://m66.net/articles/php-xml
----------------------------------------
기사 ID: 102
작가: Bob
제목: 심층적 인 이해DOMDocument
링크: https://m66.net/articles/domdocument
----------------------------------------

4. 요약

XML_PARSE ()는 XML 데이터 스트림의 이벤트 중심 처리를 제공하며, 이는 큰 파일 또는 실시간 구문 분석 작업을 처리하는 데 매우 적합합니다. 사용중인 DOM 또는 SimpleXML만큼 직관적이지는 않지만 매우 구문 분석 효율적이며 메모리에 민감한 응용 프로그램에 적합합니다.

실제 개발에서 XML 파일 구조가 복잡하거나 유연 해야하는 경우 domDocument 또는 SimpleXML을 사용하는 것을 고려할 수 있습니다. 그러나 구문 분석 프로세스를 신중하게 제어하거나 극도의 성능 요구 사항이 필요할 때 XML_PARSE ()는 의심 할 여지없이 고려해야 할 도구입니다.