PHP 4 на практике

         

Преобразование XML в HTML


Предположим, у вас имеется документ XML bookmarks.xml, содержащий список ссылок. Он выглядит примерно так:

<?xml version="1.0"?>

<website>

<title>Epicurious</title>

<url>http://www.epicurious.com</url>

<description>

Epicurious is a great online cooking resource, providing tutorials.

recipes, forums and more.

</description> </website>

Допустим, вы хотите преобразовать bookmarks.xml и вывести его




содержимое в формате, совместимом с форматом браузера вашего компьютера. Программа, приведенная в листинге 14.3, преобразует файл к нужному формату.

Листинг 14.3. Преобразование XML в HTML

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 "<font size=\"-2\" color=\"$this->tagcolor\" face=\"arial, 

verdana\ ">&1 t ; $tagname&gt ; </f ont> <br>" ;

// Функция отвечает за обработку всех символьных данных.

function characterData($parser. $characterData) { 

GLOBAL $datacplor;

print "<font size=\"-2\" color=\"$this->datacolor\" face=\"arial,

verdana\ ">&nbsp; &nbsp; &nbsp; $characterData</font> <br>";

// Функция отвечает за обработку всех закрывающих тегов.

function endTag(Sparser, $tagname) {

GLOBAL Stagcolor;

print "<font size=\"-2\" color=\"$this->tagcolor\" face=\"arial, verdana\">&lt;/ 

$tagname&gt;</font> <br>";

}

function.parse($fp) {

// xml_parse($this->xm1parser,$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_sthng(xml_get_error_code($this->xmlparser)), 

xml_get_curren_line_number($this->xml parser))); 

endif;

endwhile;

}

}

// Открыть файл XML для обработки 

$xml_file = "bookmarks. xml"; 

$fp = f open ($xml_flie, "r");

// Создать новый объект 

$xml_parser = new XMLHTML;

// Обработать $xml_file 

$xml_parser->parse($fp);

?>

В результате преобразования файл bookmarks.xml выводится в браузере в следующем виде:

<WEBSITE> 

<TITLE>

Epicurious 

</TITLE> 

<URL>

http : //www.epicurious.com 

</URL>

<DESCRIPTION>

Epicurious is a great online cooking resource,

providing tutorials, recipes, forums and more. 

</DESCRIPTION> 

</WEBSITE>

Конечно, результат не такой уж впечатляющий — мы всего лишь добились, чтобы файл XML отображался в браузере. Внеся небольшие изменения в листинг 14.3, можно преобразовать URL в работающие гиперссылки, оформить данные между парой тегов <TITLE>...</TITLE> жирным шрифтом и т. д. Как видно из листинга 14.3, я использую шрифт двух разных цветов, чтобы продемонстрировать возможность форматирования текста в браузере.

Содержание раздела