Analizator XML Expat w PHP
Wbudowany parser Expat umożliwia przetwarzanie dokumentów XML w PHP.
XML służy do opisywania danych, jego głównym celem jest to, co dane są.
Co to jest XML?
W XML nie ma zdefiniowanych etykiet. Musisz zdefiniować swoje etykiety.
Jeśli chcesz dowiedzieć się więcej o XML, odwiedź naszą Kurs XML.
Co to jest Expat?
Aby czytać i aktualizować - tworzyć i przetwarzać - dokument XML, potrzebujesz parsera XML.
Istnieją dwa podstawowe typy parserów XML:
- Parser oparty na drzewie: Taki parser przekształca dokument XML w strukturę drzewiastą. Analizuje całe dokument, i dostarcza API do dostępu do elementów w drzewie, takich jak Dokument Object Model (DOM).
- Parser oparty na wydarzeniach: Traktuje dokument XML jako serię wydarzeń. Kiedy zdarzenie się dzieje, parser wywołuje funkcje do przetwarzania.
Parser Expat to parser oparty na wydarzeniach.
Parser oparty na wydarzeniach skupia się na zawartości dokumentu XML, a nie na jego wynikach. Dlatego parser oparty na wydarzeniach może szybciej uzyskać dostęp do danych niż parser oparty na drzewie.
Spójrz na poniższy odcinek XML:
<from>John</from>
Parser oparty na wydarzeniach zgłasza powyższy XML jako ciąg trzech wydarzeń:
- Rozpoczęcie elementu: from
- Rozpoczęcie sekcji CDATA, wartość: John
- Zamknięcie elementu: from
Powyższy przykład XML zawiera poprawnie sformatowany XML. Jednak ten przykład jest nieważny XML, ponieważ nie ma do niego związanej deklaracji typu dokumentu (DTD) ani wewnętrznej DTD.
Jednak różnicy w użyciu parsera Expat nie ma. Expat to parser, który nie sprawdza poprawności, ignoruje każdą DTD.
Jako parser oparty na wydarzeniach, niewalidujący XML, Expat jest szybki i lekki, idealny do aplikacji webowych PHP.
Uwaga:Dokument XML musi być poprawnie sformatowany, w przeciwnym razie Expat wygeneruje błąd.
Instalacja
Parser XML Expat jest częścią PHP, nie wymaga instalacji, aby korzystać z tych funkcji.
Plik XML
W naszym przykładzie użyjemy poniższego pliku XML:
<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
Zainicjuj parser XML
Chcemy zainicjować parser XML w PHP, określić handlerzy dla różnych wydarzeń XML, a następnie解析 ten plik XML.
Przykład
<?php //Zainicjuj parser XML $parser=xml_parser_create(); //Funkcja do użycia na początku elementu function start($parser,$element_name,$element_attrs) { switch($element_name) { case "NOTE": echo "-- Uwaga --<br />"; break; case "TO": echo "Do: "; break; case "FROM": echo "Od: "; break; case "HEADING": echo "Nagłówek: "; break; case "BODY": echo "Wiadomość: "; } } //Funkcja do użycia na końcu elementu function stop($parser,$element_name) { echo "<br />"; } //Funkcja do użycia przy wyszukiwaniu danych znakowych function char($parser,$data) { echo $data; } //Określ handler elementów xml_set_element_handler($parser,"start","stop"); //Określ handler danych xml_set_character_data_handler($parser,"char"); //Otwórz plik XML $fp=fopen("test.xml","r"); //Odczytaj dane while ($data=fread($fp,4096)) { xml_parse($parser,$data,feof($fp)) lub zginij (sprintf("Błąd XML: %s w wierszu %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } //Wolne parser XML xml_parser_free($parser); ?>
Wyjście kodu powyżej:
-- Uwaga -- Do: George Od: John Nagłówek: Przypomnienie Wiadomość: Nie zapomnij o spotkaniu!
Wyjaśnienie mechanizmu działania:
- Zainicjuj parser XML za pomocą funkcji xml_parser_create().
- Utwórz funkcje, które współpracują z różnymi programami do przetwarzania wydarzeń.
- Dodaj funkcję xml_set_element_handler(), aby zdefiniować,哪个函数 w przypadku napotkania początkowych i końcowych etykiet.
- Dodaj funkcję xml_set_character_data_handler(), aby zdefiniować,哪个函数在解析器遇到字符数据时执行。
- Rozwiąż plik "test.xml" za pomocą funkcji xml_parse().
- W przypadku wystąpienia błędów, dodaj funkcję xml_error_string(), aby przekształcić błędy XML w tekstowe wyjaśnienia.
- Wywołaj funkcję xml_parser_free(), aby zwolnić pamięć przydzieloną funkcji xml_parser_create().
Więcej informacji o parserze PHP Expat
Aby uzyskać więcej informacji na temat funkcji PHP Expat, odwiedź nasz podręcznik referencyjny PHP XML Parser.