Heim  >  Artikel  >  Backend-Entwicklung  >  Über die Grundlagen des PHP XML Expat-Parsers

Über die Grundlagen des PHP XML Expat-Parsers

jacklove
jackloveOriginal
2018-05-07 14:39:261483Durchsuche

Der PHP-XML-Expat-Parser spielt eine wichtige Rolle in PHP. In diesem Artikel werden die zugehörigen Wissenspunkte ausführlich erläutert.

Was ist XML?

XML wird zur Beschreibung von Daten verwendet, wobei der Schwerpunkt auf den Daten liegt. XML-Dateien beschreiben die Struktur von Daten.

In XML gibt es keine vordefinierten Tags. Sie müssen Ihre eigenen Tags definieren.

Um mehr über XML zu erfahren, besuchen Sie unser XML-Tutorial.

Was ist Expat?

Um ein XML-Dokument zu lesen und zu aktualisieren – zu erstellen und zu verarbeiten – benötigen Sie einen XML-Parser.

Es gibt zwei grundlegende Arten von XML-Parsern:

Baumbasierte Parser: Dieser Parser wandelt ein XML-Dokument in eine Baumstruktur um. Es analysiert das gesamte Dokument und bietet Zugriff auf Elemente in der Baumstruktur, beispielsweise das Document Object Model (DOM).

Ereignisbasierter Parser: Behandeln Sie ein XML-Dokument als eine Reihe von Ereignissen. Wenn ein bestimmtes Ereignis auftritt, ruft der Parser die -Funktion auf, um es zu verarbeiten.

Der Expat-Parser ist ein ereignisbasierter Parser.

Ereignisbasierte Parser konzentrieren sich auf den Inhalt von XML-Dokumenten und nicht auf deren Struktur. Aus diesem Grund können ereignisbasierte Parser schneller auf Daten zugreifen als baumbasierte Parser.

Sehen Sie sich das folgende XML-Fragment an:

66fd2ada9ebb04d4250c850dc1e3737eJani73e20527c4b39a5569bf640e17eb894e

Der ereignisbasierte Parser meldet das obige XML als eine Reihe von drei Ereignissen:

Startelement: from

Start-CDATA-Abschnitt, Wert: Jani

Schlusselement: from

Das obige XML-Beispiel enthält wohlgeformtes XML. Diese Instanz ist jedoch ungültiges XML, da ihr keine Dokumenttypdeklaration (Document Type Declaration, DTD) zugeordnet ist.

Bei Verwendung des Expat-Parsers macht dies jedoch keinen Unterschied. Expat ist ein Parser, der die Gültigkeit nicht prüft und jegliche DTD ignoriert.

Als ereignisbasierter, nicht validierter XML-Parser ist Expat schnell und leichtgewichtig und somit ideal für PHP-Webanwendungen.

Hinweis: Das XML-Dokument muss wohlgeformt sein, sonst generiert Expat einen Fehler.

Installation

Die XML-Expat-Parser-Funktion ist ein integraler Bestandteil des PHP-Kerns. Für die Nutzung dieser Funktionen ist keine Installation erforderlich.

XML-Datei

Die folgende XML-Datei wird in unserem Beispiel verwendet:

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


XML-Parser initialisieren

Wir müssen den XML-Parser in PHP initialisieren, Handler für verschiedene XML-Ereignisse definieren und dann diese XML-Datei analysieren.

Instanz

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

Der obige Code gibt Folgendes aus:

-- Hinweis --
An: Tove
Von: Jani
Überschrift: Erinnerung
Nachricht: Vergiss mich dieses Wochenende nicht!

Arbeitsprinzip:

Initialisieren Sie den XML-Parser über die Funktion xml_parser_create()

Erstellen Sie mit verschiedenen Ereignissen VerarbeitungProgrammfunktionen

Fügen Sie die Funktion xml_set_element_handler() hinzu, um zu definieren, welche Funktion ausgeführt wird, wenn der Parser auf die Start- und End-Tags trifft

Fügen Sie die Funktion xml_set_character_data_handler() hinzu, um zu definieren, wann der Parser trifft auf die Start- und End-Tags Welche Funktion wird ausgeführt, wenn Zeichendaten gefunden werden

Parsen Sie die Datei „test.xml“ mit der Funktion xml_parse()

Falls ein Fehler auftritt, fügen Sie die hinzu Funktion xml_error_string() zum Konvertieren des XML-Fehlers in Text Beschreibung

Rufen Sie die Funktion xml_parser_free() auf, um den der Funktion xml_parser_create() zugewiesenen Speicher freizugeben

In diesem Artikel werden die grundlegenden Wissenspunkte erläutert Der PHP-XML-Expat-Parser im Detail und weitere Lernmaterialien sind klar. Folgen Sie der chinesischen PHP-Website, um sie anzusehen.

Verwandte Empfehlungen:

Verwandte Inhalte zur PHP-Datenbank ODBC

Verwandte Kenntnisse der PHP-MySQL-Delete-Anweisung

Verwandte Inhalte zur PHP-MySQL-Update-Anweisung

Das obige ist der detaillierte Inhalt vonÜber die Grundlagen des PHP XML Expat-Parsers. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn