아래는 xml_set_start_namespace_decl_handler 및 xml_set_end_namespace_decl_handler 함수를 사용하는 PHP 샘플 코드입니다. 이 코드는 XML 구문 분석 중에 네임 스페이스 선언을 캡처하는 방법을 보여줍니다.
<?php
// 만들다 XML 파서
$parser = xml_parser_create();
// 네임 스페이스 선언 시작시 콜백 함수 설정
xml_set_start_namespace_decl_handler($parser, "startNamespaceHandler");
// 네임 스페이스 선언 끝에서 콜백 함수 설정
xml_set_end_namespace_decl_handler($parser, "endNamespaceHandler");
// XML 끈
$xml_data = <<<XML
<root xmlns:foo="http://gitbox.net/foo" xmlns:bar="http://gitbox.net/bar">
<foo:item>Item 1</foo:item>
<bar:item>Item 2</bar:item>
</root>
XML;
// 분석 XML 데이터
if (!xml_parse($parser, $xml_data)) {
die(sprintf("XML Error: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser)));
}
// 释放파서
xml_parser_free($parser);
// 네임 스페이스 선언 시작시 콜백 함수
function startNamespaceHandler($parser, $prefix, $uri) {
echo "Namespace start: Prefix = {$prefix}, URI = {$uri}\n";
}
// 네임 스페이스 선언 끝에 콜백 함수
function endNamespaceHandler($parser, $prefix) {
echo "Namespace end: Prefix = {$prefix}\n";
}
?>
XML 파서 생성 :
XML_PARSER_CREATE ()를 사용하여 새 XML 파서 인스턴스를 만듭니다.
네임 스페이스 선언 콜백 함수 설정 :
콜백 함수는 XML_SET_START_NAMESPACE_DECL_HANDLER 및 XML_SET_END_NAMESPACE_DECL_HANDLER 함수에 의해 네임 스페이스 선언의 시작 및 종료 단계에 대해 설정됩니다. 이러한 콜백 기능은 파서가 네임 스페이스 선언을 만나면 자동으로 호출됩니다.
XML 데이터 구문 분석 :
XML 데이터를 XML_PARSE () 함수를 통해 파서에 전달하여 구문 분석 프로세스를 시작하십시오. 오류가 발생하면 xml_error_string () 및 xml_get_current_line_number ()가 오류를 찾아보고하는 데 도움이 될 수 있습니다.
네임 스페이스 처리 :
startNamespaceHandler 콜백 함수는 파서 인스턴스, 네임 스페이스의 접두사 및 URL의 세 가지 매개 변수를 수신합니다. 네임 스페이스 선언이 발생하면 네임 스페이스의 접두사와 URL을 출력합니다.
endnamespacehandler 콜백 함수는 파서 인스턴스의 접두사와 네임 스페이스의 두 매개 변수를 수신합니다. 네임 스페이스 선언 끝에서 호출되어 네임 스페이스의 접두사를 출력합니다.
실제 애플리케이션에서 XML 문서에는 여러 네임 스페이스 선언이 포함되어 있으므로 모든 네임 스페이스가 올바르게 처리되도록 처리하려면 처리 로직을 조정해야합니다.
이 두 콜백 기능은 네임 스페이스의 구문 분석 프로세스를 정확하게 제어 할 수있는 강력한 메커니즘을 제공합니다. 특히 복잡한 XML 데이터를 처리 할 때 유용합니다.
XML_SET_START_NAMESPACE_DECL_HANDLER 및 XML_SET_END_NIMESPACE_DECL_HANDLER를 결합하면 XML 문서를 구문 분석 할 때 네임 스페이스를 더 잘 관리하여 네임 스페이스 선언을 정확하게 처리 할 수 있습니다.