class XMLHTML {
VAR $xmlparser;
VAR $tagcolor = "#800000";
VAR $datacolor = "#0000ff";
function XMLHTML() {
$this->xmlparser = xml_parser_create();
xml_set_object($this->xmlparser, &$this);
xml_set_element_handler($this->xmlparser, "startTag", "endTag");
xml_set_character_data_handler($this->xmlparser, "characterData");
}
// Функция отвечает за обработку всех открывающих тегов.
function startTag($parser, $tagname, $attributes) {
GLOBAL $tagcolor;
print "tagcolor\" face=\"arial, verdana\"><$tagname>
";
}
// Функция отвечает за обработку всех символьных данных.
function characterData($parser, $characterData) {
GLOBAL $datacolor;
print "datacolor\" face=\"arial,
verdana\"> $characterData
";
}
// Функция отвечает за обработку всех закрывающих тегов.
function endTag($parser, $tagname) {
GLOBAL $tagcolor;
print "tagcolor\" face=\"arial, verdana\"></$tagname>
";
}
function parse($fp) {
// xml_parse($this->xmlparser,$data);
// Обработать файл XML
while ( $line = fread($fp, 4096) ) :
// При возникновении ошибки прервать обработку
// и вывести сообщение об ошибке.
if ( ! xml_parse($this->xmlparser, $line, feof($fp))) :
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($this->xmlparser)),
xml_get_current_line_number($this->xmlparser)));
endif;
endwhile;
}
}
// Открыть файл XML для обработки
$xml_file = "bookmarks.xml";
$fp = fopen($xml_file, "r");
// Создать новый объект
$xml_parser = new XMLHTML;
// Обработать $xml_file
$xml_parser->parse($fp);
?>