PHP XML parser Expat

Wbudowany w PHP parser Expat umożliwia przetwarzanie dokumentów XML.


Czym jest XML?

XML jest używany do opisania danych i skupić się na danych Tak. Plik XML opisuje strukturę danych.

W XML nie ma predefiniowanych tagów. Musisz zdefiniować własne tagi.

Aby dowiedzieć się więcej o XML, odwiedź naszą samouczek XML .


Co Expat tak?

Aby czytać i aktualizacja - tworzenie i procesu - dokument XML, trzeba parsera XML.

Istnieją dwa podstawowe typy analizatorów składni XML:

  • parser oparty na drzewie: Ten parser przetwarza dokument XML w strukturę drzewa. Analizuje cały dokument, a także zapewnia dostęp do elementów w drzewie, takich jak Document Object Model (DOM).
  • Zdarzenie oparte parser: Dokument XML jako ciąg zdarzeń. Po wystąpieniu określonego zdarzenia, parser wywoła funkcję do procesu.

Expat parser parser jest oparte na zdarzeniach.

Oparte na zdarzeniach parsera skupić się na zawartości dokumentu XML, a nie ich struktury. Z tego powodu, parser oparte na zdarzeniach można uzyskać dostęp do danych szybciej niż drzewa oparte parsera.

Rozważmy następujący fragment XML:

<from>Jani</from>

Parser zdarzeń na podstawie raportów XML powyżej, w postaci serii trzech zdarzeń:

  • elementu Start: od
  • Zacznij sekcja CDATA, wartość: Jani
  • Blisko elementu: od

Przykładem XML powyżej zawiera dobrze uformowane XML. Ale ten przykład nie jest prawidłowy XML, ponieważ deklaracja typu dokumentu (DTD) nie jest związany z nim.

Jednak podczas korzystania z Expat parser, to nie ma znaczenia. Expat parser nie jest sprawdzana pod kątem ważności, ignoruje wszelkie DTD.

Jako, niewalidujący parsera XML zdarzeń opartych Expat szybki i lekki, doskonale nadaje się do aplikacji internetowych PHP.

Uwaga: Dokument XMLmusi być dobrze uformowane, inaczej Expat wygeneruje błąd.


zainstalować

XML parser Expat funkcje są częścią jądra PHP. Instalacja nie jest potrzebne do korzystania z tych funkcji.


plik XML

Plik XML poniżej zostaną wykorzystane w naszym przykładzie:

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


Inicjalizacja parsera XML

Chcemy zainicjować parsera XML w PHP, określa procesor do różnych zdarzeń XML, a następnie analizować pliku XML.

Przykłady

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

Powyższy kod wyjścia będzie:

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

Jak to działa:

  1. Przez xml_parser_create () Funkcja inicjalizuje parsera XML
  2. Tworzenie z innej funkcji obsługi zdarzenia
  3. Dodaj xml_set_element_handler () do zdefiniowania, które funkcjonują do wykonania, gdy parser napotka rozpoczęcia i zakończenia tagów
  4. Dodaj xml_set_character_data_handler () do zdefiniowania, które funkcjonują do wykonania, gdy parser napotka dane znakowe
  5. Przez xml_parse () do analizowania pliku "test.xml"
  6. W przypadku wystąpienia błędu, a następnie dodać xml_error_string () funkcji konwersji opis błędu tekstowy XML
  7. xml_parser_free () Wywołanie funkcji, aby zwolnić przydzielony do xml_parser_create () funkcją pamięci

Więcej informacji parser PHP Expat

Aby uzyskać więcej informacji na temat funkcji PHP Expat, odwiedź naszą PHP XML Parser Instrukcja Reference .