현재 위치: > 최신 기사 목록> libxml_use_internal_errors를 사용하여 XML 오류를 처리하는 방법

libxml_use_internal_errors를 사용하여 XML 오류를 처리하는 방법

gitbox 2025-06-06

PHP에서 XML 파일을 처리 할 때 특히 XML이 불완전하거나 잘못된 경우 구문 분석 오류가 발생합니다. 기본적으로 LIBXML 확장자는 오류 메시지를 직접 출력하여 혼란스러운 페이지 디스플레이 또는 민감한 정보를 누출 할 수 있습니다. PHP는 이러한 오류를 우아하게 잡고 처리하기 위해 Libxml_use_internal_errors 기능을 제공하여 오류를 수집하고 직접 출력을 피할 수 있으므로보다 유연한 오류 처리를 달성 할 수 있습니다.

이 기사는 libxml_use_internal_errors 함수를 사용하는 방법을 자세하게 소개하고 샘플 코드를 결합하여 실제 개발에서 XML 구문 분석 오류를 잡고 처리하는 방법을 보여줍니다.


libxml_use_internal_errors는 무엇입니까?

libxml_use_internal_errors는 libxml의 내부 오류 처리 메커니즘을 가능하게하거나 비활성화하는 PHP의 함수입니다. 활성화 된 후 LIBXML은 직접 오류를 출력하지 않지만 오류 정보를 저장합니다. 이 프로그램은 처리를위한 다른 기능을 통해 이러한 오류를 얻을 수 있습니다.

기능 프로토 타입 :

 bool libxml_use_internal_errors ([ bool $use_errors = true ] )
  • 매개 변수 $ use_errors : 내부 오류 처리를 활성화할지 여부, 기본값으로 true .

  • 반환 값 : 통화 전 오류 처리 상태 (부울 값).


왜 libxml_use_internal_errors를 사용합니까?

기본적으로 XML 구문 분석이 실패하면 오류가 직접 인쇄되어 페이지 레이아웃이 손상되고 오류에 대한 세심한 제어가 부족할 수 있습니다.

libxml_use_internal_errors (true)를 사용한 후에는 구문 분석 오류가 직접 출력되지 않지만 캐시됩니다. libxml_get_errors () 를 통해 오류 목록을 가져오고 필요에 따라 형식 또는 기록을 얻을 수 있습니다.


샘플 코드 : XML 구문 분석 오류 캡처 및 처리

다음 예제는 libxml_use_internal_errors를 사용하여 XML 문자열을 구문 분석하고 오류가 발생할 때 오류 메시지를 캡처하는 방법을 보여줍니다.

 <?php
// 할 수 있게 하다 libxml 내부 오류 처리
libxml_use_internal_errors(true);

// 구문 분석 XML 끈(잘못 작성되었습니다)
$xmlString = <<<XML
<root>
    <item>Example</item
</root>
XML;

// 새로운 것을 만들어냅니다 DOMDocument 물체
$doc = new DOMDocument();

// 로드하십시오 XML 끈
if (!$doc->loadXML($xmlString)) {
    echo "XML 분석이 실패했습니다,오류 메시지는 다음과 같습니다:<br>";

    // 오류를 가져 와서 가로 릅니다
    $errors = libxml_get_errors();
    foreach ($errors as $error) {
        echo displayLibxmlError($error);
    }

    // 지우기 오류 캐시
    libxml_clear_errors();
} else {
    echo "XML 성공적인 분석!";
}

/**
 * 형식 및 디스플레이 libxml 오류 메시지
 *
 * @param LibXMLError $error
 * @return string
 */
function displayLibxmlError($error) {
    $return = "<br>";
    switch ($error->level) {
        case LIBXML_ERR_WARNING:
            $return .= "Warning $error->code: ";
            break;
        case LIBXML_ERR_ERROR:
            $return .= "Error $error->code: ";
            break;
        case LIBXML_ERR_FATAL:
            $return .= "Fatal Error $error->code: ";
            break;
    }
    $return .= trim($error->message);
    $return .= " on line $error->line";
    return $return;
}
?>

위 코드에서 :

  • libxml_use_internal_errors (true)를 사용하여 오류 수집을 활성화하십시오.

  • domdocument :: loadxml 로 XML을로드하고 실패하면 libxml_get_errors 에 전화하여 오류를 얻습니다.

  • 사용자 정의 함수 displayLibxMlerror를 통한 형식 및 출력 오류 정보.

  • 구문 분석 후 libxml_clear_errors () 에 전화하여 오류 버퍼를 지 웁니다.


파일로드 결합의 예

실제 프로젝트에서 XML은 대부분 파일에서 읽히고 유사한 방법을 사용할 수 있습니다.

 <?php
libxml_use_internal_errors(true);

$xmlFile = 'https://gitbox.net/example.xml';

$doc = new DOMDocument();

if (!$doc->load($xmlFile)) {
    echo "짐 XML 파일이 실패했습니다,오류는 다음과 같습니다:<br>";
    foreach (libxml_get_errors() as $error) {
        echo displayLibxmlError($error);
    }
    libxml_clear_errors();
} else {
    echo "XML 文件짐成功。";
}

function displayLibxmlError($error) {
    $return = "<br>";
    switch ($error->level) {
        case LIBXML_ERR_WARNING:
            $return .= "Warning $error->code: ";
            break;
        case LIBXML_ERR_ERROR:
            $return .= "Error $error->code: ";
            break;
        case LIBXML_ERR_FATAL:
            $return .= "Fatal Error $error->code: ";
            break;
    }
    $return .= trim($error->message);
    $return .= " on line $error->line";
    return $return;
}
?>

여기서 샘플 URL의 도메인 이름을 요구 사항을 충족하는 gitbox.net 으로 바꾸십시오.


요약

  • libxml_use_internal_errors (true)는 XML 구문 분석 오류를 포착하는 핵심입니다.

  • 오류 메시지를 직접 출력하여 프로그램 제어 및 로깅에 편리합니다.

  • libxml_get_errors ()libxml_clear_errors ()를 결합하면 오류 정보를 효과적으로 관리 할 수 ​​있습니다.

  • 문자열, 파일 또는 원격 주소에서 XML이로드되는 다양한 시나리오에 적합합니다.

이 기능의 사용을 마스터하면 개발자가보다 강력하고 친근한 XML 처리 코드를 작성하는 데 도움이 될 수 있습니다.