libxml_get_errors() 함수는 libxml 라이브러리에서 발생한 오류 정보를 담고 있는 오류 배열을 반환하는 PHP 내장 함수입니다. 이 함수는 libxml 오류 버퍼(error buffer)에 저장된 오류들을 가져오며, XML 문서 파싱 시 발생한 문제를 상세하게 확인하고 처리할 때 유용하게 사용됩니다.
문법(Syntax)
libxml_get_errors()
매개변수(Parameters)
이 함수는 별도의 매개변수를 받지 않습니다.
반환값(Return)
libxml_get_errors() 함수는 LibXMLError 객체들의 배열을 반환합니다. 만약 libxml 오류 버퍼에 저장된 오류가 없다면 빈 배열(empty array)을 반환합니다.
각 LibXMLError 객체에는 다음과 같은 속성이 포함되어 있어 오류를 세부적으로 분석할 수 있습니다.
- level: 오류의 심각도 수준 (경고, 오류, 치명적 오류 등)
- code: libxml 오류 코드
- message: 오류 메시지 내용
- line: 오류가 발생한 줄 번호
- column: 오류가 발생한 열 위치
- file: 오류가 발생한 파일 경로
사용 예제(Example)
다음은 libxml_get_errors() 함수를 활용하여 XML 파일 로딩 실패 시 오류를 확인하고 처리하는 예제입니다.
<?php
var_dump(libxml_use_internal_errors(true));
$mydoc = new DOMDocument;
if (!$mydoc->load('new.xml')) {
foreach (libxml_get_errors() as $error) {
// 여기서 오류를 처리합니다
echo $error->message;
}
libxml_clear_errors();
}
?>
코드 설명
libxml_use_internal_errors(true): 표준 PHP 오류 대신 libxml 자체 오류 버퍼에 오류를 저장하도록 설정합니다. 이 설정이true여야 libxml_get_errors()로 오류를 조회할 수 있습니다.$mydoc->load('new.xml'): XML 파일을 DOMDocument 객체로 불러오며, 실패 시false를 반환합니다.foreach (libxml_get_errors() as $error): 오류 버퍼에 쌓인 모든 오류 객체를 순회하며 처리합니다.libxml_clear_errors(): 오류 처리가 끝난 후 오류 버퍼를 비워 다음 작업에 영향을 주지 않도록 합니다.
함께 사용하면 좋은 관련 함수
- libxml_use_internal_errors(): libxml 오류를 내부 버퍼에 저장할지 여부를 설정합니다.
- libxml_clear_errors(): libxml 오류 버퍼를 비웁니다.
- libxml_get_last_error(): 마지막으로 발생한 단일 오류만 가져옵니다.
XML 유효성 검사나 DOMDocument 기반 문서 처리 시, libxml_get_errors() 함수를 활용하면 오류 원인을 명확히 파악하여 안정적인 에러 핸들링 로직을 구현할 수 있습니다.