Bei der Verarbeitung von XML -Daten in PHP begegnen Sie in der Regel auf eine Vielzahl von Situationen, von denen eine die Verarbeitung von Anweisungen in XML verarbeitet werden muss. Wenn Sie eine XML -Datei analysieren und bei bestimmten Verarbeitungsanweisungen während der Parsen ein benutzerdefiniertes Verhalten ausführen möchten, wird die Funktion XML_Set_processing_instruction_handler nützlich sein.
In XML -Dokumenten sind Verarbeitungsanweisungen eine bestimmte Struktur, die häufig für Anweisungen für Anwendungen verwendet wird, die nicht zum Dateninhaltesteil von XML gehören. Die Syntax für die Verarbeitung von Anweisungen lautet wie folgt:
<span><span><span class="hljs-meta"><?target data?></span></span><span>
</span></span>
Ziel bezieht sich auf das Ziel der Anweisung.
Daten sind Daten, die an das Befehlsziel angehängt sind.
Beispielsweise ist das Folgende ein Beispiel für eine Verarbeitungsanweisung für ein XML -Dokument:
<span><span><span class="hljs-meta"><?php echo "Hello, World!"; ?></span></span><span>
</span></span>
In dieser Anweisung wird der Prozessor angewiesen, PHP -Code auszuführen, ist jedoch nicht Teil der XML -Daten.
Wenn Sie XML -Dokumente analysieren, achtet PHP standardmäßig die Bearbeitung von Anweisungen, es sei denn, Sie sagen ihm, wie Sie mit ihnen umgehen. Zu diesem Zeitpunkt kann xml_set_processing_instruction_handler nützlich sein. Durch diese Funktion können Sie eine Rückruffunktion registrieren, die bei der Bearbeitung von Anweisungen während der XML -Analyse aufgerufen wird. Auf diese Weise können Sie das Verhalten von Handhabungsanweisungen anpassen, anstatt sie einfach zu überspringen.
Die Signatur der Funktion xml_set_processing_instruction_handler lautet wie folgt:
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">xml_set_processing_instruction_handler</span></span><span> ( resource </span><span><span class="hljs-variable">$parser</span></span><span> , </span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$handler</span></span><span> )
</span></span>
$ parser : Ist eine XML -Parser -Ressource, die über XML_PARSER_CREATE () erstellt wurde.
$ Handler : ist eine Rückruffunktion, die bei der Bearbeitung der Verarbeitungsanweisungen während des Parsens aufgerufen wird.
Die Rückruffunktion empfängt zwei Parameter:
$ Ziel : Das Ziel der Verarbeitungsrichtlinie (d. H. Der Zielteil in XML).
$ Daten : Verarbeiten Sie den Inhalt der Richtlinie (d. H. Der Datenteil in XML).
Hier ist ein einfaches Beispiel, das zeigt, wie Sie xml_set_processing_instruction_handler verwenden, um die Verarbeitungsanweisungen in XML zu verarbeiten:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// erstellen XML Parser</span></span><span>
</span><span><span class="hljs-variable">$parser</span></span><span> = </span><span><span class="hljs-title function_ invoke__">xml_parser_create</span></span><span>();
</span><span><span class="hljs-comment">// Definieren Sie die Rückruffunktion, die Anweisungen übernimmt</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">handle_processing_instruction</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$target</span></span></span><span>, </span><span><span class="hljs-variable">$data</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Das Ziel der Verarbeitungsanweisungen:<span class="hljs-subst">$target</span></span></span><span>\n";
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Verarbeitungsanweisungsdaten:<span class="hljs-subst">$data</span></span></span><span>\n";
}
</span><span><span class="hljs-comment">// Legen Sie die Verarbeitungsfunktion der Verarbeitungsanweisung fest</span></span><span>
</span><span><span class="hljs-title function_ invoke__">xml_set_processing_instruction_handler</span></span><span>(</span><span><span class="hljs-variable">$parser</span></span><span>, </span><span><span class="hljs-string">'handle_processing_instruction'</span></span><span>);
</span><span><span class="hljs-comment">// Analysiert werden XML Saite</span></span><span>
</span><span><span class="hljs-variable">$xml</span></span><span> = <span class="hljs-string">'<?xml version="1.0" encoding="UTF-8"?>
<?php echo "Hello, World!"; ?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don'</span>t forget me this weekend!</body>
</note><span class="hljs-string">';
// Analyse XML
if (!xml_parse($parser, $xml, true)) {
die(sprintf("XMLAnalyse错误: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser)));
}
// 释放Parser
xml_parser_free($parser);
?>
</span></span></span>
<span><span>Das Ziel der Verarbeitungsanweisungen:php
Verarbeitungsanweisungsdaten:echo "Hello, World!";
</span></span>
In diesem Beispiel die Verarbeitungsanweisung <? Php echo "Hallo, Welt!"; ?> In XML wird von der Rückruffunktion erfasst und verarbeitet, wodurch das Ziel und die Daten der Anweisung ausgegeben werden.
In der tatsächlichen Entwicklung können Verarbeitungsanweisungen verwendet werden, um den Verarbeitungsfluss von XML -Dateien zu steuern oder dynamische Daten an Anwendungen zu übergeben. Mithilfe von xml_set_processing_instruction_handler können Sie diese Anweisungen einfach verarbeiten und jede Logik ausführen, die Sie benötigen.
Angenommen, Sie arbeiten an einer XML -Datei mit dynamischen Anweisungen, in denen die Verarbeitungsanweisungen verwendet werden, um bestimmte Konfigurationselemente oder Steuerverhalten anzugeben. Sie können diese Anweisungen analysieren und entsprechende Vorgänge nach Bedarf durch benutzerdefinierte Rückruffunktionen ausführen.
Stellen Sie bei Verwendung von XML_Set_processing_instruction_handler sicher, dass Ihre Rückruffunktion die Ziele und Daten jeder Anweisung korrekt verarbeiten kann.
Wenn Ihr XML -Dokument mehrere Verarbeitungsanweisungen enthält, wird die Rückruffunktion für jede Anweisung einmal ausgeführt.
Stellen Sie sicher, dass Sie den Parser nach Abschluss des Parsens freigeben, um Speicherleckage zu vermeiden.
Die Funktion xml_set_processing_instruction_handler bietet PHP -Entwicklern flexible Möglichkeiten, die Verarbeitungsanweisungen während der XML -Analyse zu steuern. Durch die Registrierung einer Rückruffunktion können Sie die Verarbeitungsanweisungen entsprechend Ihren Anforderungen anpassen und damit komplexeres XML -Daten -Parsen -Verhalten erhalten. Dies macht PHP bei der Behandlung von XML -Dokumenten mit besonderen Bedürfnissen effizienter und flexibler.
Verwandte Tags:
XML