Данный скрипт разбирает загруженный с сайта hostobzor.ru XML-файл экспорта каталога и выводит список торговых марок хостинг-провайдеров и города, где расположены их офисы. Результат работы скрипта можно посмотреть здесь.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Список хостинг-провайдеров</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body style="font-family:Arial; font-size:11pt; padding-left:50">
<h1>Список хостинг-провайдеров,</h1>
<h3>полная информация о которых содержится сейчас в XML-файле экспорта</h3>
<ol>
<?php
function startElement($parser, $name, $attr){
global $errordata, $currentTag;
$currentTag = $name;
}
function endElement ($parser, $name){
}
function characterData ($parser, $data){
global $errordata, $currentTag, $i;
switch ($currentTag){
case "tm":
echo "<li><b>".$data."</b>";
break;
case "city":
echo " (".$data.")</li>";
break;
}
}
// Инициализация переменных
$file = "catalog.xml";
$currentTag = "";
$errordata = 0;
$i = 1;
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);
If (!($fp = @fopen($file, "r"))) {
echo "Could not open $file for reading<br>";
continue;
}
while ($data = fread($fp, 4096)){
if(!xml_parse($xml_parser, $data, feof($fp))){
die(sprintf("XML error at line %d column %d",
xml_get_current_line_number($xml_parser),
xml_get_current_column_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
@fclose($fp);
?>
</ol>
</body>
</html>