구문 분석 오류는 PHP를 사용하여 XML 데이터를 처리 할 때 일반적인 문제 중 하나입니다. 개발자가 문제를보다 편리하게 찾을 수 있도록 PHP는 XML_GET_ERROR_CODE () 및 XML_ERROR_STRING () 의 두 가지 매우 실용적인 기능을 제공합니다. 이 두 기능은 세부 오류 정보를 출력하기 위해 조합하여 사용하여 XML의 구조 또는 구문 오류를 신속하게 찾을 수 있습니다.
이 기사는 예제를 사용 하여이 두 기능을 사용하여 XML 오류에 대한 자세한 정보를 출력하는 방법을 설명합니다.
xml_get_error_code (Resource $ parser) : int
이 함수는 지정된 파서의 마지막 오류에 대한 오류 코드를 반환하는 데 사용됩니다.
xml_error_string (int $ code) : 문자열
이 함수는 오류 코드를 수신하고 해당 오류 메시지 문자열을 반환합니다.
이 두 기능은 일반적으로 XML Parsing이 실패 할 때 XML_PARSE () 와 함께 사용하여 명확한 오류 보고서를 제공합니다.
다음은이 두 기능을 사용하는 완전한 예입니다.
<code> & lt;? php // 오류가 포함 된 XML 데이터를 정의합니다
$ xml = '<book>
<book>
<title> XML 가이드 </title>
<저자> John Doe </author>
</예약
</books> '; // 참고 : </book> 태그가 불완전하여 구문 분석 오류가 발생합니다.
// XML 파서를 만듭니다
$ parser = xml_parser_create ();
// 기본 처리는 컨텐츠를 출력하지 않도록 금지됩니다
xml_set_element_handler ($ parser, function () {}, function () {});
// XML을 구문 분석하려고합니다
if (! xml_parse ($ parser, $ xml, true)) {
$ errorcode = xml_get_error_code ($ parser);
$ errormessage = xml_error_string ($ errorcode);
$ linenumber = xml_get_current_line_number ($ parser);
$ ColumnNumber = XML_GET_CURRENT_COLUMN_NUMBER ($ PARSER);
echo "XML 구문 분석 오류:\n";
echo "오류 메시지: " . $errorMessage . "\n";
echo "오류 코드: " . $errorCode . "\n";
echo "줄 번호: " . $lineNumber . "\n";
echo "줄 번호: " . $columnNumber . "\n";
} 또 다른 {
Echo "XML 파싱 성공. \ n";
}
// 파서 리소스 릴리스
xml_parser_free ($ parser);
?>
</코드>
위의 스크립트를 실행 한 후 누락 된 태그 폐쇄와 같은 XML에 구문 오류가 있으면 다음 출력이 표시됩니다.
XML 구문 분석 오류:
오류 메시지: mismatched tag
오류 코드: 76
줄 번호: 6
줄 번호: 1
이러한 정보는 행, 열 및 특정 오류 유형과 같은 문제를 신속하게 찾는 데 매우 유용합니다.
오류 로깅 <br> 이러한 오류 메시지는 제작 환경에서 문제를 해결하기 위해 로그 파일에 기록 될 수 있습니다.
<code> file_put_contents ( '/var/log/xml_errors.log', date ( 'c'). " - $ lineNumber, 열 $ columnNumber \ n", file_append); </코드>프론트 엔드 툴팁 오류와 결합 <br> 예를 들어 프로젝트가 온라인 XML 검증 도구 인 경우 https://gitbox.net/xml-validator 페이지에서 프론트 엔드 양식을 제공하는 경우 위 코드를 사용하여 백엔드에서 확인하고 오류 메시지를 프론트 엔드로 반환 할 수 있습니다.
XML_GET_ERROR_CODE () 및 XML_ERROR_STRING () 함수를 통해 XML 구문 분석 프로세스에서 특정 문제를 정확하게 식별 할 수 있습니다. 이는 디버깅 오류뿐만 아니라 시스템의 예외를 처리하는 능력을 향상시키는 데 도움이됩니다. XML 데이터 교환과 관련된 응용 프로그램을 개발할 때는 이러한 기능을 사용하는 것이 좋습니다.