Mailinglisten-Archive |
Hallo Gruppe,
wir hoffen, ihr könnt uns weiterhelfen? Wir haben folgende Klasse:
<?php
class XMLNodeParser {
// Deklaration der Variablen
var $identifikator="XMLNodeParser";
var $momentanerKnoten="";
var $Trennzeichen='_x_';
var $Underscore='_';
var $xml_parser;
// Benoetigte XML-Funktionen
function WurzelElement ($parser, $name, $attrs) {
$this->momentanerKnoten .= $this->Trennzeichen . $name;
if (count ($attrs)>0) $this->tagdata = $attrs;
}
function BlattElement($parser, $name) {
$curtag = $this->identifikator .
eregi_replace($this->Trennzeichen,$this->Underscore,$this->momentanerKnoten);
if(!is_array($this->tagdata)) $this->tagdata =
trim($this->tagdata);
if($this->tagdata) {
if(is_array($GLOBALS["$curtag"])) {
$GLOBALS["$curtag"][] =
$this->tagdata;
} else {
$GLOBALS["$curtag"] = array();
$GLOBALS["$curtag"][] =
$this->tagdata;
}
} else {
// if there is no cdata, we still stor something
// in the array, so we can count the levels
later
if(is_array($GLOBALS["$curtag"])) {
$GLOBALS["$curtag"][] = ' ';
} else {
$GLOBALS["$curtag"] = array();
$GLOBALS["$curtag"][] = ' ';
}
}
// Ueberschreiben des alten "curtag", da es nicht mehr
gebraucht wird
$curtag = strrev($this->momentanerKnoten);
$curtag =
substr($curtag,strpos($curtag,$this->Trennzeichen)+strlen($this->Trennzeichen));
$curtag = strrev($curtag);
$this->momentanerKnoten = $curtag;
$this->tagdata = '';
return TRUE;
}
function characterData($parser, $cdata) {
$this->tagdata .= $cdata;
}
function characterData($parser, $cdata) {
$this->tagdata .= $cdata;
}
// Aufrufen der Funktion XMLNodeParser nachdem class
initialisiert wurde
function XMLNodeParser($data,$identifikator='XMLNodeParser') {
$this->identifikator = $identifikator;
$this->xml_parser = xml_parser_create();
// Setzen der benötigten Optionen und des handlers
xml_set_object($this->xml_parser,$this);
xml_parser_set_option($this->xml_parser,XML_OPTION_CASE_FOLDING,0);
xml_set_element_handler($this->xml_parser,
"WurzelElement", "BlattElement");
xml_set_character_data_handler($this->xml_parser,
"characterData");
if (!xml_parse($this->xml_parser, $data, TRUE)) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($this->xml_parser)),
xml_get_current_line_number($this->xml_parser)));
}
xml_parser_free($this->xml_parser);
}
}
// Beenden der class XMLNodeParser
?>
php::bar PHP Wiki - Listenarchive