현재 위치: > 최신 기사 목록> xml_set_default_handler 함수를 사용하여 XML 문서의 댓글 내용을 처리하는 방법은 무엇입니까?

xml_set_default_handler 함수를 사용하여 XML 문서의 댓글 내용을 처리하는 방법은 무엇입니까?

M66 2025-06-15

PHP에서 XML 문서를 처리 할 때 일반적으로 사용되는 구문 분석 방법 중 하나는 이벤트 중심 파서 - XML ​​파서 (XML Parser)입니다. XML을 국외로 구문 분석 할 때 다양한 콜백 함수를 등록하여 요소 시작, 요소 종료, 문자 데이터 등과 같은 다양한 XML 노드를 처리 할 수 ​​있습니다. XML의 주석 내용에 대한 PHP의 국외 거주자는 기본적으로 특수 콜백 기능이 없지만 XML_SET_DEFAULT_HANDLER 기능을 사용할 수 있습니다.

xml_set_default_handler 란 무엇입니까?

XML_SET_DEFAULT_HANDLER는 기본 처리 기능을 설정하는 PHP의 XML 파서의 함수입니다. 이 기본 처리 기능은 특수 콜백 함수로 처리되지 않은 XML 조각이 발생할 때 호출됩니다. 주석, CDATA 섹션 등은 기본 처리 기능을 트리거합니다.

따라서 xml_set_default_handler를 통해 주석 내용을 캡처하여 그에 따라 처리 할 수 ​​있습니다.

샘플 코드 설명

다음은 XML에서 댓글 내용을 처리하기 위해 XML_SET_DEFAULT_HANDLER를 사용하는 방법을 보여주는 예입니다.

 <?php
// aXML파서
$parser = xml_parser_create();

// 기본 처리 기능을 설정하십시오,주석 및 기타 가입 컨텐츠를 캡처하십시오
xml_set_default_handler($parser, 'defaultHandler');

// 기본 처리 기능을 정의하십시오
function defaultHandler($parser, $data) {
    // 주석 내용은 일반적으로입니다<!--시작,~에 의해-->종결
    if (preg_match('/^<!--(.*)-->$/s', $data, $matches)) {
        echo "주석 내용: " . trim($matches[1]) . "\n";
    } else {
        // 这里可~에 의해处理其他未捕获的콘텐츠,좋다CDATA기다리다
        echo "기본적으로 프로세스 컨텐츠: " . trim($data) . "\n";
    }
}

// 읽다XML데이터
$xml = <<<XML
<?xml version="1.0"?>
<!-- 이것은XML댓글 -->
<root>
    <child>콘텐츠</child>
    <!-- 子元素댓글 -->
</root>
XML;

// 분석XML데이터
if (!xml_parse($parser, $xml, true)) {
    die(sprintf("XML분석错误: %s 에서 %d 좋아요",
        xml_error_string(xml_get_error_code($parser)),
        xml_get_current_line_number($parser)));
}

// 리소스를 자유롭게합니다
xml_parser_free($parser);
?>

코드 설명 :

  • 우리는 Parser $ Parser를 만들었습니다.

  • defaulthandler 함수는 XML_SET_DEFAULT_HANDLER를 사용하여 등록되어 특정 콜백에서 캡처하지 않은 모든 컨텐츠를 처리합니다.

  • 기본 처리 기능에서 정규식은 데이터가 주석인지 여부를 감지하는 데 사용되며, 그렇다면 주석 내용이 출력됩니다.

  • 구체적으로 처리되지 않은 다른 컨텐츠도 출력되지만 여기서는 주석에 중점을 둡니다.

실행 결과의 예 :

 주석 내용: 이것은XML댓글
기본적으로 프로세스 컨텐츠: 

기본적으로 프로세스 컨텐츠: 

주석 내용: 子元素댓글

보시다시피, 주석 내용은 성공적으로 캡처되고 출력됩니다.

요약

XML_SET_DEFAULT_HANDLER를 사용하면 주석을 포함하여 다른 특수 콜백에서 캡처하지 않은 XML의 컨텐츠를 처리 할 수 ​​있습니다. 간단한 정기 일치를 통해 주석 텍스트를 해당 처리를 위해 추출 할 수 있습니다.

이 접근법은 국외 파서를 사용할 때 로깅, 필터링 또는 컨텐츠 추출과 같은 주석을 사용자 정의하는 데 특히 적합합니다.