본문 바로가기

프로그램&DB/PHP

PHP XML Expat Parser 파서

PHP 의 XML Expat 파서

«이전 다음 장»

내장 Expat 파서는 PHP에서 XML 문서를 처리하는 것이 가능합니다.


XML이란 무엇입니까?

XML은 데이터를 설명하는 데이터가 무엇에 집중하는 데 사용됩니다. XML 파일은 데이터의 구조를 설명합니다.

XML에서 어떤 태그는 미리 정의된 없습니다. 당신은 자신의 태그를 정의해야합니다.

당신은 XML에 대한 자세한 내용을 원하시면, 저희를 방문하십시오 XML 자습서를 .


Expat은 무엇입니까?

만들고 조작 - - 읽고 업데이 트하는 방법은 XML 문서를, 당신은 XML 파서가 필요합니다.

XML 구문 분석기의 두 가지 기본 유형이 있습니다 :

  • 트리 기반의 파서 :이 파서가 트리 구조로 XML 문서를 변환합니다. 그것은 전체 문서를 분석하고, 나무 요소에 대한 액세스를 제공합니다. 문서 객체 모델 (DOM)을 예
  • 이벤트 기반 파서는 일정의 연속으로 XML 문서를보기. 특정 이벤트가 발생하면 그것을 처리하는 함수를 호출

Expat 파서는 이벤트 기반 파서입니다.

XML 문서가 아닌 그들의 구조의 콘텐츠에 이벤트 기반 파서의 중점을두고 있습니다. 이 때문에 이벤트 기반 파서 빠른 나무 기반의 파서보다 데이터에 액세스할 수 있습니다.

다음 XML 분수 보라 :

<from>Jani</from>

이벤트 기반 파서는 세 사건의 시리즈로 위의 XML을보고 :

  • 요소를 시작에서
  • 시작 CDATA 섹션 값 : Jani
  • 닫기 요소 :에서

위의 XML 예제는 잘 구성된 XML이 포함되어 있습니다. 그것에 연결된 문서 유형 정의 (DTD)가 없기 때문에 그러나, 예를 들어, 유효한 XML되지 않습니다.

Expat 파서를 사용하는 경우 그러나이 어떤 변화도 가져오지 않습니다. Expat이 아닌 검증 파서이며, 모든 DTDs을 무시합니다.

이벤트 기반 XML 파서를 비 검증, Expat 빠르고 작은, 그리고 PHP 웹 어플 리케이션을위한 완벽한 일치로.

참고 : XML 문서가 잘 구성되어 있어야합니다 또는 Expat가 오류를 생성합니다.


설치

XML의 Expat 파서 기능은 PHP 코어의 일부입니다. 이러한 기능을 사용하는 데 필요한 어떤 설치가 없습니다.


XML 파일

XML 파일은 아래의 예제에서 사용됩니다 :

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>


XML 파서를 초기화

우리는 PHP에서 XML 파서를 초기화하려면 다른 XML 이벤트에 대한 몇 가지 처리기를 정의하고, 다음 XML 파일을 구문 분석합니다.

<?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);
?>

코드의 출력은 위의 것입니다 :

-- Note --
To: Tove
From: Jani
Heading: Reminder
Message: Don't forget me this weekend!

작동 방법 :

  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_create (와 할당된 메모리를 해제하기 위해 xml_parser_free () 함수를 호출하는) 함수

더 많은 PHP Expat 파서

PHP Expat 기능에 대한 자세한 내용은 방문 PHP XML 파서 참조하십시오.



[출처] http://www.w3schools.com

'프로그램&DB > PHP' 카테고리의 다른 글

PHP SimpleXML  (0) 2011.09.01
PHP XML DOM 관련 문서  (0) 2011.09.01
PHP Database ODBC : 데이터베이스 ODBC  (0) 2011.09.01
PHP MySQL Delete문  (0) 2011.09.01
PHP MySQL Update문  (0) 2011.09.01