| |
|
|
| | Есть сайт с рабочим кодом обработки XML файла. Пробую в нем разобраться. Переписал его локально и сохранил rss.xml. Код index.php:
<?
include "rssnews.php";
?>
|
В нем после строки :
"2. Создание объекта SIMPLEXML и загрузка документа
filename = rss/rssarena.xml"
больше ничего не отображает. Файл rss.xml - прикрепил. Код rssnews.php :
<?
$filex="";
// Имя файла для хранения RSS на локальном сервере
$filename = 'rss/rssarena.xml';
// URL RSS потока
$rss_url = 'rss.xml'; //'http://mv.org.ua/rss.xml';
// Закачка файлов XML
echo "1. Закачка файлов XML <br>";
// Произвести проверку на то, что файл уже закачен
if (!file_exists($filename))
{ // Закачать и сохранить
download($rss_url, $filename);
}
else
{ // Проверка на то, что если файл устарел более, чем на 12 часов - качать и сохранить новый
if (time() > filemtime($filename) + 60*60)
{ // Закачать и сохранить
download($rss_url, $filename);
}
}
// Создание объекта SIMPLEXML и загрузка документа
echo "2. Создание объекта SIMPLEXML и загрузка документа <br> filename = ". $filename;
if(!$xml = @domxml_open_file($filename))
{
// echo "Error while parsing the document\n";
echo "Какая-то ошибка";
}
else
{
$root = $xml->document_element();
echo " root= ".$root."<br>";
$i = 1;
echo " i=".$i."<br>";
$nodes = $root->child_nodes();
$i=0;
echo " i=".$i."<br>";
foreach ($nodes as $item)
{
$nodesc=$item->child_nodes();
foreach ($nodesc as $items)
{
if($items->node_name()=='item')
{
$newsbody=$items->child_nodes();
foreach ($newsbody as $news)
{
switch($news->node_name())
{
case 'title': $title = $news->get_content(); echo "title=".$title."<br>";
break;
case 'link': $link = $news->get_content();
break;
case 'description': $description =$news->get_content();
break;
case 'pubDate': $date = $news->get_content();
break;
default: break;
}
}
if ($i<15)
{
echo '<span class="black_small"><b>'.substr($date, 0, strlen($date)-5).'</b></span>';
echo '<br><b><a href="' , $link , '" class="blue_small" target="_blank">'
.iconv("UTF-8","windows-1251", $title).'</a></b><br>';
}
$i++;
}
}
}
}
###########################################################################
function download($url, $filename) {
// Закачать файл с указанного URL и сохранить с определенным именем
$file = file_get_contents($url);
if ($file)
{
$fp = fopen($filename,'w');
fwrite($fp,$file);
fclose($fp);
}
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: Worldmen
(20.08.2007 в 23:53)
| | | Во-первых, тут используется не simpleXML, а DOMXML.
Во-вторых, DOMXML существует только в PHP версии 4.
А ничего не отображается потому, что происходит подавление ошибок:
if(!$xml = @domxml_open_file($filename)) | |
| |
|
|
| |
|
|
| |
для: Саня
(21.08.2007 в 00:46)
| | | насчет simpleXML разработчик, видимо, забыл удалить коментарий.
На сервере сайта и у меня стоит PHP 4
Я не совсем понял, подавление ошибок идет из-за - if(!$xml ... или из-за собаки в @domxml_open_file($filename) ?
Если убираю собаку, появляеться ошибка -"Fatal error: Call to undefined function: domxml_open_file() in z:\home\localhost\www\xml\rssnews.php on line 26"
В книге и на сайтах я негде ни видел чтоб использовалась собака, для чего она?
И этот скрипт сейчас стооит на сайте и работает. | |
| |
|
|
| |
|
|
| |
для: Worldmen
(21.08.2007 в 12:15)
| | | Собака как раз и нужна для подавления ошибок, в случае неуспешного действия.
Какая точно у вас версия РНР? DOMXML доступен начиная с 4.2.1 | |
| |
|
|
| |
|
|
| |
для: Саня
(21.08.2007 в 12:37)
| | | У меня локально стоит - PHP Version 4.4.4
на сервере - PHP version 4.4.7
Я так понимаю - у меня просто почемуто не работает domxml_open_file.
Может надо найти версию 4.4.7 ?
Еще нашел через phpinfo():
xml
XML Support - active
XML Namespace Support - active
EXPAT Version - 1.95.6
---------------------------------------
Поставил я версию 4.4.7 - тоже самое. А в файл включать больше ничего не требуеться, из стандартных? | |
| |
|
|