집 >백엔드 개발 >XML/RSS 튜토리얼 >PHP 확장의 XML 작업(2) - XML 파서 설치 및 개요
XML(eXtensible Markup Language)은 구조화된 문서와 상호 작용하기 위한 A 데이터 형식입니다. W3C(Internet Society)에서 정의한 표준입니다. XML 및 관련 기술에 대한 정보는 //m.sbmmt.com/에서 확인할 수 있습니다.
이 PHP 확장 구현은 James Clark이 PHP로 작성한 expat를 지원합니다. 이 툴킷은 XML 문서를 구문 분석할 수 있지만 유효성을 검사할 수는 없습니다. PHP에서 제공하는 US-ASCII, ISO-8859-1 및 UTF-8의 3가지 문자 인코딩을 지원합니다. UTF-16은 지원되지 않습니다.
이 확장은 XML 파서를 생성하고 다양한 XML 이벤트에 대한 처리기를 정의합니다. 각 XML 파서에는 조정할 수 있는 몇 가지 매개변수도 있습니다.
이 확장에는 libxml PHP 확장이 필요합니다. 이는 --enable-libxml을 사용해야 함을 의미합니다. 단, libxml이 기본적으로 활성화되어 있으므로 이 작업은 암시적으로 수행됩니다.
기본적으로 이 확장 프로그램은 expat compat 레이어를 사용합니다. expat를 사용할 수도 있습니다. 이 라이브러리는 //m.sbmmt.com/에 있습니다. expat 라이브러리에서 Makefile을 사용하면 기본적으로 라이브러리 파일이 빌드되지 않습니다.
libexpat.a: $(OBJS) ar -rc $@ $(OBJS) ranlib $@
expat의 소스코드 RPM 설치 패키지는 //m.sbmmt.com/에서 확인하실 수 있습니다.
이 확장은 기본적으로 활성화되어 있으며 컴파일 시 다음 옵션을 통해 비활성화할 수 있습니다: --disable-xml
이러한 기능은 기본적으로 활성화되어 있으며 번들로 제공되는 국외 거주자 도서관 . --disable-xml 매개변수를 통해 XML 지원을 비활성화할 수 있습니다. PHP를 Apache 1.3.9 이상용 모듈로 컴파일하면 PHP는 자동으로 Apache와 함께 번들로 제공되는 expat 라이브러리를 사용합니다. 번들로 제공되는 expat 라이브러리를 사용하지 않으려면 PHP의 구성 구성 스크립트를 실행할 때 --with-expat-dir=DIR 매개변수를 사용하세요. 여기서 DIR은 expat 설치의 루트 디렉터리를 가리켜야 합니다. .
Windows 버전의 PHP에는 이 확장 기능이 내장되어 있습니다. 이러한 기능을 사용하기 위해 추가 확장을 로드할 필요는 없습니다.
XML 이벤트 핸들러의 정의는
PHP 处理器函数 | 事件描述 |
---|---|
xml_set_element_handler() | 当 XML 解析器遇到开始或结束标签时,会触发元素事件。 开始标签和结束标签有不同的处理器。 |
xml_set_character_data_handler() | 字符数据范指 XML 文档中所有非标记的内容,包括标签之间的空格。 注意,XML 解析器不会添加或删除任何空格,由应用程序(你)来判断空格是否有意义。 |
xml_set_processing_instruction_handler() | PHP 程序员必须熟练掌握处理指令(PI)。是处理指令, 其中php被称为“处理指令对象”。 除所有以“XML”开头的处理指令对象是系统保留的外, 其他的处理函数均是由应用程序指定的。 |
xml_set_default_handler() | 不执行其他处理函数,则会执行缺省的处理函数。 在缺省的处理函数中可取得如 XML 和文档类型声明等信息。 |
xml_set_unparsed_entity_decl_handler() | 未解析的实体声明(NDATA)会调用此处理函数。 |
xml_set_notation_decl_handler() | 符号声明会调用此处理函数 |
xml_set_external_entity_ref_handler() | 当 XML 解析器发现对外部已解析的普通实体的引用时, 会调用此处理函数。例如,引用一个文件或URL。实例可参见 XML 外部实体例程。 |
요소 처리 기능은 요소 이름을 대소문자 구분(대문자) 형식으로 변환할 수 있습니다. 대소문자 접기는 "대문자가 아닌 문자를 해당 대문자로 바꾸는 문자열 작업"으로 정의됩니다. 즉, XML에서는 대소문자 구분이 대문자로 변환됩니다.
기본적으로 핸들러를 통해 전달된 모든 요소 이름은 대문자로 변환됩니다. 각 XML 파서는 각각 xml_parser_get_option() 및 xml_parser_set_option() 함수를 통해 이 함수를 쿼리하고 제어할 수 있습니다.
다음 상수는 XML 관련 오류 코드(xml_parse() 함수의 반환 값)입니다:
XML_ERROR_NONE
XML_ERROR_NO_MEMORY
XML_ERROR_SYNTAX
XML_ERROR_NO_ELEMENTS
XML_ERROR_INVALID_TOKEN
XML_ERROR_UNCLOSED_TOKEN
XML_ERR OR_PARTIAL_CHAR
XML_ ERROR_TAG_MISMATCH
XML_ERROR_DUPLICATE_ATTRIBUTE
XML_ERROR_JUNK_AFTER_DOC_ELEMENT
ML_ERROR_UNDEFINED_ENTITY
XML_ERROR_RECURSIVE_ENTITY_REF
XML_ERROR_ASYNC_ENTITY
XML_ERROR_BAD_CHAR_REF
XML을 파싱하면 원본 인코딩이 완료됩니다. XML 파서를 생성할 때 원래 인코딩을 지정할 수 있습니다. 이 인코딩은 나중에 XML 파서의 수명 주기에서 수정할 수 없습니다. 지원되는 원시 인코딩은 ISO-8859-1, US-ASCII 및 UTF-8입니다. 처음 두 개는 단일 바이트 인코딩입니다. 즉, 각 문자는 1바이트로 표시됩니다. UTF-8은 문자를 1~4바이트로 배열된 일련의 가변 수(최대 21개) 비트로 인코딩할 수 있습니다. PHP에서 사용되는 기본 원시 인코딩은 ISO-8859-1입니다.
PHP가 구문 분석된 XML 문서에서 지정된 대상 인코딩으로 표현할 수 없는 문자를 발견하면 문제 문자가 "다운그레이드"됩니다. 일반적으로 해당 문자는 물음표(?)로 대체됩니다.
위는 PHP 확장의 XML 연산(2) - XML 파서 설치 및 개요입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(m.sbmmt.com)를 참고해주세요!