libxml

libxml

PHP의 XML 관련 기능 대부분은 사실 리브xml(libxml)이라는 공용 라이브러리 위에서 동작해요. libxml 확장은 그 기반이 되는 기능과 상수, 그리고 오류 처리용 함수를 제공해요. 아래의 핵심 확장들이 이 libxml 확장에 의존하고 있답니다. DOM, libxml, SimpleXML, SOAP, WDDX, XSL, XML, XMLReader, XMLRPC, XMLWriter가 전부 그 목록이에요.

출처: libxml

본문

이 함수들과 상수들은 PHP 5.1.0부터 사용할 수 있어요. libxml 확장의 주된 역할은 크게 두 가지예요.

  1. XML 파싱 전반에 쓰이는 공용 상수와 설정을 제공하는 것
  2. 파싱 중 발생하는 오류를 세밀하게 제어하고 조회하는 것

특히 libxml_use_internal_errors()를 쓰면 libxml 내부 오류 버퍼를 켜고 PHP의 일반 오류 대신 직접 오류를 조회할 수 있어요. XML을 다루는 여러 확장을 쓰다 보면 이 오류 제어가 굉장히 유용해요.

libxml 함수

  • libxml_clear_errors — libxml 오류 버퍼를 비워요
  • libxml_disable_entity_loader — 외부 엔티티를 불러오는 기능을 비활성화해요
  • libxml_get_errors — 오류 배열을 가져와요
  • libxml_get_external_entity_loader — 현재 외부 엔티티 로더를 가져와요
  • libxml_get_last_error — libxml의 마지막 오류를 가져와요
  • libxml_set_external_entity_loader — 기본 외부 엔티티 로더를 변경해요
  • libxml_set_streams_context — 다음 libxml 문서 로드/쓰기에 사용할 스트림 컨텍스트를 설정해요
  • libxml_use_internal_errors — libxml 오류를 비활성화하고 사용자가 필요할 때 오류 정보를 가져올 수 있게 해요

LibXMLError 클래스

파싱 중 발생한 오류 하나를 나타내는 LibXMLError 클래스가 있어요. 이 클래스는 오류 코드, 메시지, 줄 번호, 컬럼 번호, 파일 경로, 심각도(레벨) 등의 속성을 담고 있어요.

더 알아보기

설치 요구 사항은 버전에 따라 달라져요. PHP 7.4 이상과 7.4 미만의 설치 방법이 다르므로 Installing/Configuring 문서를 확인해 보세요. 미리 정의된 상수와 LibXMLError 클래스의 세부 내용도 각 문서에서 이어서 볼 수 있어요.