Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обработка XML файла.
 
 автор: Worldmen   (20.08.2007 в 23:53)   письмо автору
 
 

Есть сайт с рабочим кодом обработки 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($date0strlen($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);
        }
    }
?> 

   
 
 автор: Саня   (21.08.2007 в 00:46)   письмо автору
 
   для: Worldmen   (20.08.2007 в 23:53)
 

Во-первых, тут используется не simpleXML, а DOMXML.
Во-вторых, DOMXML существует только в PHP версии 4.
А ничего не отображается потому, что происходит подавление ошибок:
if(!$xml = @domxml_open_file($filename))

   
 
 автор: Worldmen   (21.08.2007 в 12:15)   письмо автору
 
   для: Саня   (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"
В книге и на сайтах я негде ни видел чтоб использовалась собака, для чего она?
И этот скрипт сейчас стооит на сайте и работает.

   
 
 автор: Саня   (21.08.2007 в 12:37)   письмо автору
 
   для: Worldmen   (21.08.2007 в 12:15)
 

Собака как раз и нужна для подавления ошибок, в случае неуспешного действия.
Какая точно у вас версия РНР? DOMXML доступен начиная с 4.2.1

   
 
 автор: Worldmen   (21.08.2007 в 13:23)   письмо автору
 
   для: Саня   (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 - тоже самое. А в файл включать больше ничего не требуеться, из стандартных?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования