| |
| * Link führt ins Internet |
|
| |
Eigenschaften der XML-Funktionen
|
|
Die durch Expat zur Verfügung gestellten XML-Funktionen weisen einige Besonderheiten auf, die es zu beachten gilt.
Umwandlung der Schreibweise
Die als "Case Folding" bezeichnete Maßnahme bezieht sich auf die Anforderung der Ereignisbehandlungsroutinen, die zu untersuchenden Tags in Grossbuchstaben zu erhalten. Entsprechend werden sämtliche XML-Elemente, die gesendet werden, zuvor in Grossbuchstaben umgewandelt. Der Vorgang kann mit den beiden Funktionen xml_parser_get_option() und xml_parser_set_option() kontrolliert werden.
XML-Fehlercodes
Die Fehlercodes, die von der Funktion xml_parse() ausgegeben werden, liegen als Konstante vor. Die folgende Tabelle enthält sämtliche Fehlercodes.
| XML-Fehlercode |
| XML_ERROR_NONE |
| XML_ERROR_NO_MEMORY |
| XML_ERROR_SYNTAX |
| XML_ERROR_NO_ELEMENTS |
| XML_ERROR_INVALID_TOKEN |
| XML_ERROR_UNCLOSED_TOKEN |
| XML_ERROR_PARTIAL_CHAR |
| XML_ERROR_TAG_MISMATCH |
| XML_ERROR_DUPLICATE_ATTRIBUTE |
| XML_ERROR_JUNK_AFTER_DOC_ELEMENT |
| XML_ERROR_PARAM_ENTITY_REF |
| XML_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_ERROR_EXTERNAL_ENTITY_HANDLING |
Zeichenkodierung
PHP kodiert Zeichen intern immer im Unicode-Format UTF-8, 8 bis 21 Bits in bis zu 4 Bytes. Die Kodierung des Quelltextes muss vor dem Parsen festgelegt werden. Die alternativen Zeichensätze US-ASCII und ISO-8859-1 (Latin-1) sind 8-Bit-Zeichensätze.
Eine weitere Einstellung ist nach dem Parsen der Tags möglich. Diese als Zielkodierung bezeichnete Wahl des Zeichensatzes erfolgt, wenn die untersuchten Elemente an die Ereignisbehandlungsroutinen weiter geleitet werden. Zeichen, die nicht abgebildet werden können, ersetzt PHP durch ein Fragezeichen.
XML und Objekte
Seit PHP 4 haben Sie die Möglichkeit mit Hilfe der Funktion xml_set_object() auch Objekte zu parsen. Hierfür haben wir für Sie ein Beispiel, welches Sie sich ausführlich betrachten sollten.
Beispiel
<pre>
<?php
// XML Klassendefinition
class xml_klasse {
var $parser;
function xml_klasse() {
$this->parser = xml_parser_create();
xml_set_object($this->parser, &$this);
xml_set_element_handler($this->parser, "open_tag", "close_tag");
xml_set_character_data_handler($this->parser, "cdata");
}
function parse($data) {
xml_parse($this->parser, $data);
}
function open_tag($parser, $tag, $attributes) {
var_dump($parser, $tag, $attributes);
}
function close_tag($parser, $tag) {
var_dump($parser, $tag);
}
function cdata($parser, $cdata) {
var_dump($parser, $cdata);
}
}
// XML Parser (als Objekt)
$xml_parser = new xml_klasse();
// XML-Struktur parsen
$xml_parser->parse("<PERSON ID='100'>Matthias</PERSON>");
?>
</pre>
|
Ausgabe
resource(2) of type (xml)
string(6) "PERSON"
array(1) {
["ID"]=>
string(3) "100"
}
resource(2) of type (xml)
string(8) "Matthias"
resource(2) of type (xml)
string(6) "PERSON"
|
| Hinweis: In Zukunft wird die Verarbeitung von XML-Strukturen in Klassen und Objekten sicherlich vermehrt auftreten. |
|
|
|
|
|
|
|