XML 파서(Expat 기반)
XML 파서(Expat 기반)
XML 문서를 파싱해서 특정 이벤트에 맞춰 처리해야 한다면, 이벤트 기반 파서인 XML 파서 확장을 쓸 수 있어요. XML(eXtensible Markup Language)은 웹에서 구조화된 문서를 교환하기 위한 데이터 형식으로, W3C(World Wide Web Consortium)가 정의한 표준이에요. XML과 관련 기술에 대한 정보는 http://www.w3.org/XML/ 에서 찾을 수 있어요.
출처: XML Parser
본문
이 PHP 확장은 PHP에서 James Clark의 expat을 지원해요. 이 툴킷은 XML 문서를 파싱할 수 있지만 검증(validation)은 하지 않아요. PHP에서도 제공하는 세 가지 소스 문자 인코딩, 즉 US-ASCII, ISO-8859-1, UTF-8을 지원하고, UTF-16은 지원하지 않아요.
이 확장으로 XML 파서를 만들고, 각각의 XML 이벤트에 대한 핸들러를 정의할 수 있어요. 각 파서에는 조정할 수 있는 몇 가지 매개변수도 있어요.
XML 파서를 만드는 진입점은 두 함수예요.
xml_parser_create— XML 파서를 생성해요xml_parser_create_ns— 네임스페이스 지원이 있는 XML 파서를 생성해요
생성한 파서에 핸들러를 등록하고, xml_parse로 문서 파싱을 시작해요.
핵심 함수
xml_parse— XML 문서 파싱을 시작해요xml_parse_into_struct— XML 데이터를 배열 구조로 파싱해요xml_parser_free— XML 파서를 해제해요xml_parser_get_option/xml_parser_set_option— 파서 옵션을 읽고 설정해요
이벤트 핸들러 등록 함수
파서가 문서를 읽으며 만나는 각 이벤트에 반응할 함수를 등록해요.
xml_set_element_handler— 시작/끝 요소 핸들러를 설정해요xml_set_character_data_handler— 문자 데이터 핸들러를 설정해요xml_set_processing_instruction_handler— 처리 지시(PI) 핸들러를 설정해요xml_set_default_handler— 기본 핸들러를 설정해요xml_set_external_entity_ref_handler— 외부 엔티티 참조 핸들러를 설정해요xml_set_notation_decl_handler,xml_set_unparsed_entity_decl_handler— 표기법·미파싱 엔티티 선언 핸들러를 설정해요xml_set_start_namespace_decl_handler/xml_set_end_namespace_decl_handler— 네임스페이스 선언 시작/끝 핸들러를 설정해요xml_set_object— 객체 안에서 XML 파서를 사용하게 해요
오류·위치 관련 함수
xml_get_error_code— XML 파서 오류 코드를 가져와요xml_error_string— XML 파서 오류 문자열을 가져와요xml_get_current_line_number/xml_get_current_column_number/xml_get_current_byte_index— 현재 파싱 위치를 반환해요
또한 XMLParser 클래스가 제공되며, 다양한 미리 정의된 상수(이벤트 핸들러, 오류 코드, 문자 인코딩, 케이스 폴딩 관련 상수)가 함께 있어요.
더 알아보기
설치 요구 사항, 미리 정의된 상수, 이벤트 핸들러와 오류 코드, 문자 인코딩에 대한 상세 내용은 Installing/Configuring과 각 항목 문서를 확인해 보세요. XML 요소 구조, 태그 매핑, 외부 엔티티, 클래스를 이용한 파싱 예제는 Examples 문서에 있어요.