PHP XML Expat 파서
내장된 Expat 파서를 사용하면 PHP에서 XML 문서를 처리할 수 있습니다.
XML이란 무엇인가요?
XML은 확장 가능한 마크업 언어입니다. 태그는 컴퓨터가 이해할 수 있는 정보 기호를 의미하며, 이러한 태그를 통해 컴퓨터는 다양한 정보를 담고 있는 기사를 처리할 수 있습니다. 이러한 태그를 정의하는 방법은 HTML과 같이 국제적으로 통용되는 마크업 언어를 선택할 수도 있고, 관련자가 자유롭게 결정하는 XML과 같은 마크업 언어를 사용할 수도 있습니다. 이것이 바로 언어의 확장성입니다. XML은 SGML에서 단순화되고 수정되었습니다. 주로 XML, XSL, XPath 등을 사용합니다.
위 단락은 XML의 기본 정의이며 널리 받아들여지는 설명입니다. 간단히 말해서 XML은 데이터 설명 언어이지만 일반적으로 컴퓨터에서 인식하고 실행하는 공통 언어의 기본 기능을 가지고 있지 않습니다. 원하는 효과를 얻거나 컴퓨터에서 허용되도록 해석하기 위해 다른 언어에만 의존할 수 있습니다.
XML을 처음 접하는 경우 XML의 정의가 무엇인지 이해하지 못할 수도 있습니다. 아마도 XML이 무엇인지 이해하기 위해 관점을 바꿀 수 있습니다. XML이 무엇을 할 수 있는지 이해하는 것이 더 빈약한 정의보다 더 도움이 될 것입니다.
XML 애플리케이션 표면은 주로 문서 유형과 데이터 유형의 두 가지 유형으로 나뉩니다. 다음은 몇 가지 일반적인 XML 애플리케이션입니다.
1. 가장 일반적인 문서 애플리케이션 중 하나인 사용자 정의된 XML+XSLT=>HTML. XML은 문서 전체의 XML 데이터를 저장하고, XSLT는 XML을 변환 및 구문 분석하고 이를 XSLT의 HTML 태그와 결합하여 최종적으로 HTML이 되어 브라우저에 표시됩니다. 대표적인 예가 CSDN의 게시물입니다.
2. XML은 가장 일반적인 데이터 기반 애플리케이션 중 하나인 마이크로 데이터베이스입니다. 우리는 관련 XML API(MSXML DOM, JAVA DOM 등)를 사용하여 XML에 액세스하고 쿼리합니다. 게시판 구현에서 XML을 데이터베이스로 사용하는 경우를 자주 볼 수 있습니다.
3. 통신 데이터로. 가장 일반적인 것은 XML을 사용하여 데이터를 전송하는 WEB SERVICE입니다.
4. 일부 애플리케이션의 구성 정보 데이터. 일반적인 것들은 J2EE가 웹 서버를 구성할 때 사용되는 web.XML입니다.
5. 기타 문서의 XML 형식. WORD, EXCEL 등과 같은
6. 데이터 간의 매핑 관계를 저장합니다. 최대 절전 모드와 같은.
여기에 소개된 6가지 애플리케이션은 기본적으로 XML의 주요 용도를 다루고 있습니다. 간단히 말해서 XML은 기존 프로그래밍 언어만큼 구체적이지 않은 추상 언어입니다. 이를 깊이 이해하려면 응용 프로그램부터 시작하여 필요한 용도를 선택한 다음 사용 방법을 배워야 합니다.
XML은 데이터가 무엇인지에 초점을 맞춰 데이터를 설명하는 데 사용됩니다. XML 파일은 데이터의 구조를 설명합니다.
XML에는 미리 정의된 태그가 없습니다. 자신만의 태그를 정의해야 합니다.
XML에 대해 자세히 알아보려면 XML 튜토리얼을 방문하세요.
Expat란 무엇인가요?
Expat는 스트림 지향 파서입니다. 파서 콜백(또는 핸들러) 함수를 등록한 다음 해당 문서 검색을 시작합니다. 파서가 파일의 지정된 위치를 인식하면 해당 부분에 해당하는 처리기를 호출합니다(등록한 경우). 파일은 파서에 공급되어 여러 조각으로 분할되어 메모리에 로드됩니다. 따라서 국외 거주자는 이러한 대용량 파일을 구문 분석할 수 있습니다.
XML 문서를 읽고 업데이트(생성 및 처리)하려면 XML 파서가 필요합니다.
XML 파서에는 두 가지 기본 유형이 있습니다.
· 트리 기반 파서: 이 파서는 XML 문서를 트리 구조로 변환합니다. 전체 문서를 분석하고 DOM(문서 개체 모델)과 같은 트리의 요소에 대한 액세스를 제공합니다.
· 이벤트 기반 파서: XML 문서를 일련의 이벤트로 처리합니다. 특정 이벤트가 발생하면 파서는 이를 처리하는 함수를 호출합니다.
Expat 파서는 이벤트 기반 파서입니다.
이벤트 기반 파서는 구조보다는 XML 문서의 내용에 중점을 둡니다. 이 때문에 이벤트 기반 파서는 트리 기반 파서보다 더 빠르게 데이터에 액세스할 수 있습니다.
다음 XML 조각을 살펴보세요.
<from>Jani</from>
이벤트 기반 파서는 위 XML을 일련의 세 가지 이벤트로 보고합니다.
· 시작 요소: from
· 시작 CDATA 섹션, 값: Jani
· 닫는 요소: from
위의 XML 예에는 Good 형식이 포함되어 있습니다. XML. 그러나 이 인스턴스는 연결된 DTD(문서 유형 선언)가 없기 때문에 잘못된 XML입니다.
그러나 Expat 파서를 사용할 때는 아무런 차이가 없습니다. Expat은 유효성을 확인하지 않고 DTD를 무시하는 파서입니다.
이벤트 기반의 검증되지 않은 XML 파서인 Expat는 빠르고 가벼워서 PHP 웹 애플리케이션에 이상적입니다.
참고: XML 문서는 올바른 형식이어야 합니다. 그렇지 않으면 Expat에서 오류가 발생합니다.
설치
XML Expat 파서 기능은 PHP 코어의 필수 부분입니다. 이 기능을 사용하기 위해 설치가 필요하지 않습니다.
XML 파일
이 예에서는 다음 XML 파일이 사용됩니다.
<?xml version="1.0" 인코딩=" ISO -8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>알림</heading> ;
<body>이번 주말에 저를 잊지 마세요!</body>
</note>
XML 파서 초기화
PHP에서 XML 파서를 초기화하고 다양한 XML 이벤트에 대한 핸들러를 정의한 다음 이 XML 파일을 구문 분석하겠습니다.
Instance
<?php //Initialize the XML parser $parser=xml_parser_create(); //Function to use at the start of an element function start($parser,$element_name,$element_attrs) { switch($element_name) { case "NOTE": echo "-- Note --<br>"; break; case "TO": echo "To: "; break; case "FROM": echo "From: "; break; case "HEADING": echo "Heading: "; break; case "BODY": echo "Message: "; } } //Function to use at the end of an element function stop($parser,$element_name) { echo "<br>"; } //Function to use when finding character data function char($parser,$data) { echo $data; } //Specify element handler xml_set_element_handler($parser,"start","stop"); //Specify data handler xml_set_character_data_handler($parser,"char"); //Open XML file $fp=fopen("test.xml","r"); //Read data while ($data=fread($fp,4096)) { xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Error: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } //Free the XML parser xml_parser_free($parser); ?>
위 코드는 다음을 출력합니다:
-- 참고 --
받는 사람: Tove
보낸 사람: Jani
제목: 알림
메시지: 이번 주말에 나를 잊지 마세요!
작동 방식:
1. xml_parser_create() 함수를 통해 XML 파서를 초기화합니다
2. 다양한 이벤트 핸들러와 일치하는 함수를 만듭니다
3. 파싱할 때 정의할 xml_set_element_handler() 함수를 추가합니다. 장치가 시작 및 끝 레이블을 만나면 어떤 함수가 실행되는지
4. xml_set_character_data_handler() 함수를 추가하여 파서가 문자 데이터를 만났을 때 어떤 함수를 정의하는지
5. xml_parse()를 통해 ( ) 함수를 사용하여 "test.xml" 파일을 구문 분석합니다
6. 오류가 발생한 경우 XML 오류를 텍스트 설명으로 변환하는 xml_error_string() 함수를 추가합니다
7. xml_parser_free() 함수를 사용하여 해제 xml_parser_create() 함수에 할당된 메모리
PHP Expat 파서에 대한 추가 정보
PHP Expat 함수에 대한 자세한 내용을 보려면 PHP를 방문하세요. XML 파서 참조 매뉴얼.