Heim  >  Artikel  >  Backend-Entwicklung  >  XML-Betrieb der PHP-Erweiterung (2) – Installation und Übersicht über den XML-Parser

XML-Betrieb der PHP-Erweiterung (2) – Installation und Übersicht über den XML-Parser

黄舟
黄舟Original
2017-02-13 14:53:292074Durchsuche



1. Übersicht und Installation

XML (eXtensible Markup Language) ist ein A-Datenformat für die Interaktion mit strukturierten Dokumenten. Es handelt sich um einen von der Internet Society (W3C) definierten Standard. Informationen zu XML und verwandten Technologien finden Sie unter http://www.php.cn/.

Diese PHP-Erweiterungsimplementierung unterstützt Expat, geschrieben in PHP von James Clark. Dieses Toolkit kann XML-Dokumente analysieren (aber nicht validieren). Es unterstützt drei von PHP bereitgestellte Zeichenkodierungen: US-ASCII, ISO-8859-1 und UTF-8. UTF-16 wird nicht unterstützt.

Diese Erweiterung erstellt einen XML-Parser und definiert Handler für verschiedene XML-Ereignisse. Jeder XML-Parser verfügt außerdem über eine Handvoll Parameter, die angepasst werden können.

Diese Erweiterung erfordert die PHP-Erweiterung libxml. Das bedeutet, dass --enable-libxml verwendet werden muss, obwohl dies implizit erfolgt, da libxml standardmäßig aktiviert ist.

Standardmäßig verwendet diese Erweiterung die Expat-Kompatibilitätsschicht. Sie können auch expat verwenden. Diese Bibliothek befindet sich unter http://www.php.cn/. Durch die Verwendung des Makefiles in der Expat-Bibliothek wird die Bibliotheksdatei standardmäßig nicht erstellt. Sie können zum Erstellen die folgenden Build-Regeln verwenden:


libexpat.a: $(OBJS)
    ar -rc $@ $(OBJS)
    ranlib $@

Das Quellcode-RPM-Installationspaket von expat finden Sie unter http://www.php.cn/.

Diese Erweiterung ist standardmäßig aktiviert und kann beim Kompilieren über die folgenden Optionen deaktiviert werden: --disable-xml

Diese Funktionen sind standardmäßig aktiviert und verwenden die gebündelte Expat-Bibliothek. Sie können die XML-Unterstützung über den Parameter --disable-xml deaktivieren. Wenn Sie PHP als Modul mit Apache 1.3.9 oder höher kompilieren, verwendet PHP automatisch die mit Apache gebündelte Expat-Bibliothek. Wenn Sie die mitgelieferte Expat-Bibliothek nicht verwenden möchten, verwenden Sie bitte den Parameter --with-expat-dir=DIR, wenn Sie das Konfigurationsskript „configure“ von PHP ausführen, wobei DIR auf das Stammverzeichnis der Expat-Installation verweisen sollte .

Die Windows-Version von PHP bietet integrierte Unterstützung für diese Erweiterung. Um diese Funktionen nutzen zu können, müssen keine zusätzlichen Erweiterungen geladen werden.

2. Ereignishandler

Die Definition des XML-Ereignishandlers lautet wie folgt:

被支持的 XML 处理器
PHP 处理器函数 事件描述
xml_set_element_handler() 当 XML 解析器遇到开始或结束标签时,会触发元素事件。 开始标签和结束标签有不同的处理器。
xml_set_character_data_handler() 字符数据范指 XML 文档中所有非标记的内容,包括标签之间的空格。 注意,XML 解析器不会添加或删除任何空格,由应用程序(你)来判断空格是否有意义。
xml_set_processing_instruction_handler() PHP 程序员必须熟练掌握处理指令(PI)。是处理指令, 其中php被称为“处理指令对象”。 除所有以“XML”开头的处理指令对象是系统保留的外, 其他的处理函数均是由应用程序指定的。
xml_set_default_handler() 不执行其他处理函数,则会执行缺省的处理函数。 在缺省的处理函数中可取得如 XML 和文档类型声明等信息。
xml_set_unparsed_entity_decl_handler() 未解析的实体声明(NDATA)会调用此处理函数。
xml_set_notation_decl_handler() 符号声明会调用此处理函数
xml_set_external_entity_ref_handler() 当 XML 解析器发现对外部已解析的普通实体的引用时, 会调用此处理函数。例如,引用一个文件或URL。实例可参见 XML 外部实体例程。
Unterstützter XML-Handler
PHP-Handler-Funktion Ereignisbeschreibung
xml_set_element_handler( ) td> Elementereignisse werden ausgelöst, wenn der XML-Parser auf ein öffnendes oder schließendes Tag stößt. Offene Tags und schließende Tags haben unterschiedliche Handler.
xml_set_character_data_handler() Der Zeichendatenbereich bezieht sich auf alle nicht getaggten Inhalte im XML-Dokument, einschließlich Leerzeichen zwischen Tags. Beachten Sie, dass der XML-Parser keine Leerzeichen hinzufügt oder entfernt. Es liegt an der Anwendung (Sie), zu bestimmen, ob das Leerzeichen sinnvoll ist.
xml_set_processing_instruction_handler() PHP-Programmierer müssen mit der Verarbeitung von Anweisungen (PI) vertraut sein. ist eine Verarbeitungsanweisung, wobei PHP als „Verarbeitungsanweisungsobjekt“ bezeichnet wird. Außer allen Verarbeitungsanweisungsobjekten, die mit „XML“ beginnen und vom System reserviert sind, werden andere Verarbeitungsfunktionen vom Anwendungsprogramm vorgegeben.
xml_set_default_handler() Wenn andere Verarbeitungsfunktionen nicht ausgeführt werden, wird die Standardverarbeitungsfunktion ausgeführt. Informationen wie XML- und Dokumenttypdeklarationen sind in den Standardhandlerfunktionen verfügbar.
xml_set_unparsed_entity_decl_handler() Eine nicht geparste Entitätsdeklaration (NDATA) ruft diese Handlerfunktion auf.
xml_set_notation_decl_handler() Die Symboldeklaration ruft diese Handlerfunktion auf
xml_set_external_entity_ref_handler() Dieser Handler wird aufgerufen, wenn der XML-Parser einen Verweis auf eine extern analysierte gewöhnliche Entität findet. Verweisen Sie beispielsweise auf eine Datei oder URL. Beispiele finden Sie in den XML-Routinen für externe Entitäten.

3. Groß- und Kleinschreibung

Die Elementverarbeitungsfunktion kann den Elementnamen in Groß- und Kleinschreibung umwandeln. Die Groß-/Kleinschreibung ist definiert als „eine Zeichenfolgenoperation, die Nicht-Großbuchstaben durch die entsprechenden Großbuchstaben ersetzt“. Mit anderen Worten: In XML wird die Groß-/Kleinschreibung in Großbuchstaben umgewandelt.

Standardmäßig werden alle durch den Handler übergebenen Elementnamen in Großbuchstaben umgewandelt. Jeder XML-Parser kann diese Funktion über die Funktionen xml_parser_get_option() bzw. xml_parser_set_option() abfragen und steuern.

4. Fehlercodes

Die folgenden Konstanten sind XML-bezogene Fehlercodes (Rückgabewerte der Funktion xml_parse()):

  • XML_ERROR_NONE

  • XML_ERROR_NO_MEMORY

  • XML_ERROR_SYNTAX

  • XML_ERROR_NO_ELEMENTS

  • XML_ERROR_INVALID_TOKEN

  • XML_ERROR_UNCLOSED_TOKEN

  • XML_ERR. OR_PARTIAL_CHAR

  • XML_ERROR_TAG_MISMATCH

  • XML_ERROR_DUPLICATE_ATTRIBUTE

  • XML_ERROR_JUNK_AFTER_DOC_ELEMENT

  • ML_ERROR_UNDEFINED_ENTITY

  • <.>XML_ERROR_RECURSIVE_ENTITY_REF

  • XML_ERROR_ASYNC_ENTITY

  • XML_ERROR_BAD_CHAR_REF

  • XML_ERROR_BINARY_ENTITY_REF

  • XML _ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF
  • XML_ERROR_MISPLACED_XML_PI
  • XML_ERROR_UNKNOWN_ENCODING
  • XML_ERROR_INCORRECT_ENCODING
  • > XML_ERROR_UNCLOSED_CDATA_SECTION

  • XML_EXTERNAL_EXTITY_HANDLING

  • Mehrere Unterschiede Die Zeichenkodierung unterstützt den Unicode-Zeichensatz. Es gibt zwei Arten von Zeichenkodierungen: Originalkodierung und Zielkodierung. In der internen Darstellung von PHP werden Dokumente immer in UTF-8 kodiert.

  • Wenn das XML analysiert wird, ist die ursprüngliche Kodierung abgeschlossen. Beim Erstellen eines XML-Parsers können Sie die ursprüngliche Kodierung angeben (diese Kodierung kann später im Lebenszyklus des XML-Parsers nicht geändert werden). Die unterstützten Rohkodierungen sind ISO-8859-1, US-ASCII und UTF-8. Die ersten beiden sind Einzelbyte-Kodierungen, d. h. jedes Zeichen wird als ein Byte dargestellt. UTF-8 kann Zeichen in eine Reihe variabler Bitzahlen (bis zu 21) kodieren, die in 1 bis 4 Bytes angeordnet sind. Die in PHP verwendete Standard-Rohkodierung ist ISO-8859-1.
  • Wenn PHP die Daten an die XML-Verarbeitungsfunktion übergibt, ist die Zielkodierung abgeschlossen. Beim Erstellen eines XML-Prozessors wird die Zielcodierung auf die ursprüngliche Codierung festgelegt, kann jedoch nach Belieben geändert werden. Die Zielkodierung wirkt sich auf Zeichendaten und Tag-Namen sowie auf Verarbeitungsanweisungsziele aus.

  • Wenn der XML-Parser auf ein Zeichen außerhalb des Bereichs stößt, den die ursprüngliche Codierung darstellen kann, gibt er einen Fehler zurück.

Wenn PHP im geparsten XML-Dokument auf ein Zeichen stößt, das nicht durch die angegebene Zielkodierung dargestellt werden kann, wird das Problemzeichen „herabgestuft“. Normalerweise werden diese Zeichen durch Fragezeichen (?) ersetzt.

Das Obige ist die XML-Operation der PHP-Erweiterung (2) – XML-Parser-Installation und Übersicht. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

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