Bei der Arbeit mit XML -Dokumenten bietet PHP eine Reihe leistungsstarker Funktionen, mit denen wir XML -Daten analysieren und manipulieren können. Insbesondere wenn wir XML -Daten analysieren, müssen wir häufig angesichts verschiedener Elementarten unterschiedlich auf jedes Element reagieren. In diesem Fall kann die Funktion xml_set_default_handler eine wichtige Rolle spielen, mit der wir eine Standardverarbeitungsmethode für XML -Elemente definieren können, die nicht speziell verarbeitet werden.
In diesem Artikel wird detailliert eingeführt, wie Sie XML_Set_Default_handler verwenden, um flexibel mit verschiedenen Arten von XML -Elementen umzugehen und ihre spezifische Verwendung anhand von Beispielen zu demonstrieren.
xml_set_default_handler ist eine Funktion, die von der XML -Erweiterung von PHP bereitgestellt wird. Es ermöglicht uns, eine Standardverarbeitungsfunktion für den XML -Parser festzulegen, der aufgerufen wird, wenn ein XML -Element, das keine explizite Verarbeitungsregel hat, aufgerufen wird. Einfach ausgedrückt ist diese Funktion ein "Bottom-up" -Mechanismus, der sicherstellt, dass wir alle Elemente, die nicht speziell verarbeitet werden, umgehen können.
bool xml_set_default_handler ( resource $parser , callable $handler )
$ Parser : XML Parser Resource, normalerweise ein Parser, der über XML_PARSER_CREATE erstellt wurde.
$ Handler : Die Standardhandhabungsfunktion. Diese Funktion empfängt die folgenden Parameter:
$ parser : Die aktuelle Parser -Ressource.
$ Daten : Der derzeit gelesene XML -Datenblock (String).
Erstellen Sie zunächst einen XML -Parser, der normalerweise mit xml_parser_create verwendet wird, um einen neuen XML -Parser zu erstellen.
$parser = xml_parser_create();
Die Standardverarbeitungsfunktion ist eine Funktion, die genannt wird, wenn der Parser auf ein Element trifft, das nicht separat verarbeitet werden kann. Diese Funktion akzeptiert zwei Parameter: Parser -Ressourcen- und Dateninhalt.
function default_handler($parser, $data) {
echo "Default handler: " . $data . "\n";
}
Die Standardverarbeitungsfunktion wird über xml_set_default_handler angegeben.
xml_set_default_handler($parser, 'default_handler');
Als nächstes können wir XML_Parse verwenden, um XML -Daten zu analysieren. Wenn ein Element, das nicht explizit verarbeitet wird, die Standardverarbeitungsfunktion aufgerufen wird.
$xml_data = "<root><element>Content 1</element><unknown>Content 2</unknown></root>";
xml_parse($parser, $xml_data);
xml_parser_free($parser);
In diesem Beispiel wird die Standardverarbeitungsfunktion default_handler ausgelöst, wenn der XML -Parser auf das Tag <nobe Bekannte> auftritt, da keine spezifische Verarbeitungsfunktion definiert ist und die Ausgabe wie folgt ausgelöst wird:
Default handler: Content 2
Angenommen, wir werden mit einer komplexen XML -Datei zu tun, die mehrere Elementtypen enthält. In diesem Fall können wir xml_set_default_handler und andere Elementhandhabungsfunktionen (wie xml_set_element_handler ) verwenden, um flexibel mit verschiedenen Situationen umzugehen.
$parser = xml_parser_create();
// Definieren Sie die Verarbeitungsfunktion für den Anfang und das Ende eines Elements
function start_element($parser, $name, $attrs) {
echo "Start element: $name\n";
}
function end_element($parser, $name) {
echo "End element: $name\n";
}
// Definieren Sie die Standardverarbeitungsfunktion
function default_handler($parser, $data) {
echo "Default handler: " . $data . "\n";
}
// Stellen Sie die Verarbeitungsfunktion für Start und Ende eines Elements fest
xml_set_element_handler($parser, 'start_element', 'end_element');
// Legen Sie die Standardverarbeitungsfunktion fest
xml_set_default_handler($parser, 'default_handler');
// Analyse XML Daten
$xml_data = "<root><name>John</name><age>30</age><unknown>Unknown content</unknown></root>";
xml_parse($parser, $xml_data);
// 释放Analyse器资源
xml_parser_free($parser);
Das Ausgabeergebnis ist wie folgt:
Start element: root
Start element: name
End element: name
Start element: age
End element: age
Start element: unknown
Default handler: Unknown content
End element: unknown
End element: root
In diesem Beispiel verarbeiten die Funktionen start_element und end_element die Start- und End -Tags von XML -Elementen, während die Standardverarbeitungsfunktion default_handler den Inhalt im <nobekannung> -Tag verarbeitet.
Wenn die XML -Daten URLs oder andere spezielle Daten enthalten, können wir sie auch flexibel verarbeiten. In der Standardverarbeitungsfunktion können wir die Daten analysieren, die URL extrahieren und eine weitere Verarbeitung durchführen. Wenn wir beispielsweise alle URLs im XML auf den Domain -Namen M66.NET richten möchten, können wir dies tun:
function default_handler($parser, $data) {
// Erkennen, ob es enthält URL,und ersetzen Sie den Domainnamen
$data = preg_replace('/https?:\/\/([a-zA-Z0-9.-]+)\//', 'https://m66.net/', $data);
echo "Processed data: " . $data . "\n";
}
Auf diese Weise können wir sicherstellen, dass alle aufgelösten URLs einheitlich auf m66.net -Domain -Namen modifiziert werden.
Die Funktion xml_set_default_handler bietet eine flexible Möglichkeit, Elemente zu verarbeiten, die nicht explizit verarbeitet werden. Durch Kombination von XML_Set_Element_handler und anderen verwandten Funktionen können wir die Verarbeitung gemäß verschiedenen Elementenarten personalisieren und spezielle Fälle in der Standardverarbeitungsfunktion einheitlich verwalten. Für einige spezielle XML -Inhalte, wie z. B. URL -Verarbeitung, können wir sie auch flexibel über reguläre Ausdrücke usw. verarbeiten usw.
Durch diese Methoden kann PHP uns helfen, eine Vielzahl komplexer XML -Daten effizient zu verarbeiten und zu analysieren, um sicherzustellen, dass unser Code robuster und flexibler ist.