현재 위치: > 최신 기사 목록> XML_PARSE 및 XML_PARSER_CREATE와 함께 사용자 정의 파서를 만드는 방법

XML_PARSE 및 XML_PARSER_CREATE와 함께 사용자 정의 파서를 만드는 방법

M66 2025-05-12

PHP에서 XML 데이터 처리는 일반적인 작업 중 하나입니다. PHP는 XML을 처리하는 다양한 방법을 제공하며 그중 XML_PARSEXML_PARSER_CREATE는 일반적으로 사용되는 두 가지 기능입니다. 이러한 기능은 이벤트 중심 구문 분석 방법을 제공하므로 많은 양의 XML 데이터를 처리 할 때 성능과 효율성을 더 잘 보장 할 수 있습니다.

이 기사에서는 XML_PARSEXML_PARSER_CREATE를 사용하여 사용자 정의 XML 파서를 생성하고 구문 분석 중에 발생한 XML 데이터를 올바르게 처리하는 방법을 설명합니다.

1. XML_PARSEXML_PARSER_CREATE 란 무엇입니까?

  • XML_PARSER_CREATE :이 기능은 XML 파서를 생성하고 파서 리소스를 반환하는 데 사용됩니다. 이 파서를 통해 PHP는 XML 구조에 따라 파일 또는 문자열의 데이터를 점차적으로 구문 분석 할 수 있습니다.

  • XML_PARSE :이 기능은 XML_PARSER_CREATE 에 의해 생성 된 구문 분석 및 수신 XML 데이터를 구문 분석하는 데 사용됩니다. XML 컨텐츠를 단계별로 구문 분석하고 관련 이벤트를 트리거 할 수 있습니다 (예 : 태그가 시작, 끝 또는 텍스트 노드가 발생하는 경우).

문법:

 xml_parser_create([encoding]);
xml_parse(parser, data[, terminate]);
  • XML_PARSER_CREATE 파서를 만들 때 인코딩을 지정하도록 선택할 수 있습니다 (예 : UTF-8 , ISO-8859-1 등).

  • XML_PARSE는 데이터를 구문 분석하는 데 사용됩니다. 구문 분석 할 때마다 XML 데이터 블록을 처리하고 콜백 기능을 통해 처리합니다.

2. 사용자 정의 XML 파서를 만듭니다

PHP에서는 XML_PARSER_CREATE를 사용하여 커스텀 파서를 생성하고 다른 콜백 함수를 설정하여 구문 분석 프로세스 중에 다른 이벤트를 처리 할 수 ​​있습니다. 예를 들어, 시작 태그, 엔드 태그, 텍스트 내용 등을 처리하기 위해 콜백 함수를 설정할 수 있습니다.

샘플 코드 :

 <?php
// 사용자 정의 콜백 함수
function startElementHandler($parser, $name, $attrs) {
    echo "태그 시작: $name\n";
    // 라벨 특성을 인쇄하십시오
    if (!empty($attrs)) {
        echo "태그 속성: " . print_r($attrs, true) . "\n";
    }
}

function endElementHandler($parser, $name) {
    echo "엔드 태그: $name\n";
}

function characterDataHandler($parser, $data) {
    echo "텍스트 데이터: $data\n";
}

// 만들다 XML 파서
$parser = xml_parser_create('UTF-8');

// 콜백 함수를 설정하십시오
xml_set_element_handler($parser, "startElementHandler", "endElementHandler");
xml_set_character_data_handler($parser, "characterDataHandler");

// 예 XML 데이터
$xml_data = '<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book>
        <title lang="en">PHP for Beginners</title>
        <author>John Doe</author>
        <price>29.95</price>
    </book>
    <book>
        <title lang="es">PHP para Principiantes</title>
        <author>Juan Pérez</author>
        <price>25.95</price>
    </book>
</bookstore>';

// 분석 XML 데이터
if (!xml_parse($parser, $xml_data)) {
    echo "XML 분석错误: " . xml_error_string(xml_get_error_code($parser)) . "\n";
} else {
    echo "XML 데이터분석成功\n";
}

// 释放파서资源
xml_parser_free($parser);
?>

분석:

  • xml_set_element_handler는 각각 start tag 및 end tag의 콜백 함수, 즉 startelementhandlerendlementhandler를 설정합니다.

  • XML_SET_CHARACTER_DATA_HANDLER 텍스트 데이터를 처리하는 콜백 함수 문자 DataHandler를 설정합니다.

  • XML 데이터를 구문 분석 할 때 구문 분석 중에 콜백 함수가 트리거되어 다른 XML 이벤트를 처리합니다.

산출:

 태그 시작: bookstore
태그 시작: book
태그 시작: title
태그 속성: Array
(
    [lang] => en
)
텍스트 데이터: PHP for Beginners
엔드 태그: title
태그 시작: author
텍스트 데이터: John Doe
엔드 태그: author
태그 시작: price
텍스트 데이터: 29.95
엔드 태그: price
엔드 태그: book
태그 시작: book
태그 시작: title
태그 속성: Array
(
    [lang] => es
)
텍스트 데이터: PHP para Principiantes
엔드 태그: title
태그 시작: author
텍스트 데이터: Juan Pérez
엔드 태그: author
태그 시작: price
텍스트 데이터: 25.95
엔드 태그: price
엔드 태그: book
엔드 태그: bookstore
XML 데이터분석成功

3. 프로세스 URL 데이터

XML 데이터를 처리 할 때 때때로 URL을 포함하는 데이터를 구문 분석해야합니다. 구문 분석 중에 다음과 유사한 XML 데이터를 발생시킬 수 있습니다.

 <links>
    <link>http://m66.net/page1</link>
    <link>http://m66.net/page2</link>
</links>

구문 분석 중에 이러한 URL을 얻고 처리하려면 사용자 정의 콜백 기능을 통해 이러한 링크를 추출하고 조작 할 수 있습니다.

수정 된 샘플 코드 :

 <?php
// 사용자 정의 콜백 함수
function startElementHandler($parser, $name, $attrs) {
    echo "태그 시작: $name\n";
}

function endElementHandler($parser, $name) {
    echo "엔드 태그: $name\n";
}

function characterDataHandler($parser, $data) {
    // 있는지 확인하십시오 URL
    if (filter_var($data, FILTER_VALIDATE_URL)) {
        echo "효과적인 URL: $data\n";
    } else {
        echo "텍스트 데이터: $data\n";
    }
}

// 만들다 XML 파서
$parser = xml_parser_create('UTF-8');

// 콜백 함수를 설정하십시오
xml_set_element_handler($parser, "startElementHandler", "endElementHandler");
xml_set_character_data_handler($parser, "characterDataHandler");

// 예 XML 데이터
$xml_data = '<?xml version="1.0" encoding="UTF-8"?>
<links>
    <link>http://m66.net/page1</link>
    <link>http://m66.net/page2</link>
</links>';

// 분석 XML 데이터
if (!xml_parse($parser, $xml_data)) {
    echo "XML 분석错误: " . xml_error_string(xml_get_error_code($parser)) . "\n";
} else {
    echo "XML 데이터분석成功\n";
}

// 释放파서资源
xml_parser_free($parser);
?>

산출:

 태그 시작: links
태그 시작: link
효과적인 URL: http://m66.net/page1
엔드 태그: link
태그 시작: link
효과적인 URL: http://m66.net/page2
엔드 태그: link
엔드 태그: links
XML 데이터분석成功

4. 요약

XML_PARSER_CREATEXML_PARSE를 사용하면 XML 데이터를 매우 유연하게 구문 분석하고 콜백 기능을 사용자 정의하여 구문 분석 중에 다양한 이벤트를 처리 할 수 ​​있습니다. 이러한 기능을 결합하여 URL, 태그 속성, 텍스트 데이터 등을 포함한 실제 요구에 따라 XML에서 다양한 데이터를 처리 할 수 ​​있습니다.

사용자 정의 콜백 함수를 사용하면 다양한 XML 요소와 텍스트를 처리하여 구문 분석 프로세스를보다 작동하고 유연하게 만들 수 있습니다. 이 이벤트 중심 구문 분석 방법은 대규모 XML 데이터를 처리 해야하는 응용 프로그램 시나리오에 특히 적합합니다.

이 튜토리얼을 사용하면 PHP에서 XML_PARSEXML_PARSER_CREATE를 사용하여 사용자 정의 XML 파서를 생성하고 XML 데이터를 프로세스하는 방법을 더 잘 이해하는 데 도움이되기를 바랍니다.