Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с обработкой данных с фаила хмл

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Segol
Отправлено: 04 Ноября, 2013 - 18:27:59
Post Id


Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




Добрый день друзья..помогите с вопросом ..

есть скрипт .который закачивает файл .tgz , распаковывает и упаковывает в .gz берёт хмл фаил с него..
проблема
с первого сайта teleguide.info всё работает как положено..

с другого vipiko.tv в распокованом фаиле хмл
в первой строчке до "<?xml version"
появляются нечто подобное.. "tvguide.xml000644205060205060 36761212235743222 13454 0ustar00vipikovipiko000000000000"

а потом толко "<?xml version"..

в чём может быть проблема и как победит..

вот сам ход обработки..


PHP:
скопировать код в буфер обмена
  1.  
  2. $tvxml_url = "http://www.vipiko.tv/get?key=";
  3.     $gzip=file_get_contents($tvxml_url);
  4.     $stringu ="kanaly/kanal/xmltv.xml.gz";
  5.     file_put_contents($stringu,$gzip);
  6.     $rest = substr($gzip, -4);
  7.     $tmp_var = unpack("V", $rest);
  8.     $GZFileSize = end($tmp_var);
  9.     $FileRead = $tvxml_url;
  10.     $HandleRead = gzopen($FileRead, "rb");
  11.     $xmlstr = gzread($HandleRead, $GZFileSize);
  12.     gzclose($HandleRead);
  13.     $xmlstr = str_replace('display-name', 'display_name', $xmlstr);
  14.     echo $xmlstr;
  15.     $xml = simplexml_load_string($xmlstr);
  16.  
  17.  
  18.  
  19.  




на 15 строка ошибка

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Start tag expected, '<' not found in K:\home\tv\www\parser.php on line 15

Warning: simplexml_load_string() [function.simplexml-load-string]: tvguide.xml in K:\home\tv\www\parser.php on line 15

Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in K:\home\tv\www\parser.php on line 15

(Отредактировано автором: 04 Ноября, 2013 - 18:29:28)

 
 Top
anakoman
Отправлено: 04 Ноября, 2013 - 20:14:40
Post Id


Гость


Покинул форум
Сообщений всего: 119
Дата рег-ции: Май 2013  


Помог: 1 раз(а)




А структура каталогов на разных сайтах одинаковая?

Цитата:
$stringu ="kanaly/kanal/xmltv.xml.gz";


-----
Иногда, пока не спросишь - сам не поймешь
 
 Top
Segol
Отправлено: 04 Ноября, 2013 - 20:28:28
Post Id


Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




тот что работает файл xmltv.xml.gz

тот что не работает файл xmltv.tgz


в нутри у рабочего фаил хмл

<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE tv SYSTEM "http://www.teleguide.info/xmltv.dtd">
<tv generator-info-name="TVH_W/0.750l" generator-info-url="http://www.teleguide.info/">
<channel id="1">
<display-name lang="ru">Первый канал</display-name>
<icon src="http://www.teleguide.info/img/channel/1.gif" />
</channel>


у не рабочего фаила

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE tv SYSTEM "http://www.vipiko.tv/xmltv.dtd">
<tv source-info-url="http://www.vipiko.tv" source-info-name="ВИПИКО. Телепрограмма." generator-info-name="vipiko.tv 1.0" generator-info-url="http://www.vipiko.tv">
<channel id="1">
<display-name lang="ru">Первый канал (Россия)</display-name>
<icon src="http://www.vipiko.tv/logo_chl/1_48.gif"/>
</channel>
(Добавление)
видимо при архивации в фаил хмл добавляется в начало строки это -

tvguide.xml000644205060205060 36761212235766267 13472 0ustar00vipikovipiko000000000000

думаю и за этого ошибка
почему и как с этим бороться ?
 
 Top
anakoman
Отправлено: 05 Ноября, 2013 - 10:20:05
Post Id


Гость


Покинул форум
Сообщений всего: 119
Дата рег-ции: Май 2013  


Помог: 1 раз(а)




Цитата:
с первого сайта teleguide.info всё работает как положено..


Скажите, на сайте vipiko.tv вы берете тот же саймый архив .tgz или уже .gz ?


-----
Иногда, пока не спросишь - сам не поймешь
 
 Top
Segol
Отправлено: 05 Ноября, 2013 - 13:35:51
Post Id


Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




нет.. с рабочего сайта берёт gz и yпаковает в gz

с неработающего (vipiko.tv ) берёт в tgz a упаковывает в gz
 
 Top
anakoman
Отправлено: 05 Ноября, 2013 - 13:41:39
Post Id


Гость


Покинул форум
Сообщений всего: 119
Дата рег-ции: Май 2013  


Помог: 1 раз(а)




ну сделай также как на рабочем


-----
Иногда, пока не спросишь - сам не поймешь
 
 Top
Segol
Отправлено: 05 Ноября, 2013 - 14:05:13
Post Id


Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




anakoman пишет:
ну сделай также как на рабочем


сделал.. переименованный и закавыченный файл теперь чистый
но выводит данные всё рвно с данной ощибкой..
 
 Top
anakoman
Отправлено: 05 Ноября, 2013 - 14:11:32
Post Id


Гость


Покинул форум
Сообщений всего: 119
Дата рег-ции: Май 2013  


Помог: 1 раз(а)




Попробуй сформулировать проблему еще раз (т.е. как есть сейчас), чет я запутался


-----
Иногда, пока не спросишь - сам не поймешь
 
 Top
Segol
Отправлено: 05 Ноября, 2013 - 14:19:35
Post Id


Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




anakoman пишет:
Попробуй сформулировать проблему еще раз (т.е. как есть сейчас), чет я запутался


ок.. , закаченный архив тепер tgz с фаилом tvguide.xml в нутри..
при распаковки файла tgz на компе файл tvguide.xml теперь чистый как положено..

открытие через пхп ,скриптом предосталенным в самом верху, файл tvguide.xml имеет ошибки в виде добавление в самом верху

tvguide.xml000644205060205060 33566612236160631 13456 0ustar00vipikovipiko000000000000

предполагаю делает этот кусок..


$HandleRead = gzopen($FileRead, "rb");
$xmlstr = gzread($HandleRead, $GZFileSize);
(Добавление)
думаю фаил бывший gz имеет другое сжатие нежели новый tgz может из за этого..
или tgz имеет другие функзии открытия . ?
 
 Top
anakoman
Отправлено: 05 Ноября, 2013 - 14:32:32
Post Id


Гость


Покинул форум
Сообщений всего: 119
Дата рег-ции: Май 2013  


Помог: 1 раз(а)




Как я понимаю

$HandleRead = gzopen($FileRead, "rb");
$FileRead = $tvxml_url;
$tvxml_url = "http://www.vipiko.tv/get?key=";

CODE (html):
скопировать код в буфер обмена
  1. Пример 1. Пример использования gzopen()
  2. <?php
  3. $fp = gzopen("/tmp/file.gz", "r");
  4. ?>


А файл который ты распаковываешь на сервере где лежит?
Видимо здесь
PHP:
скопировать код в буфер обмена
  1. $stringu ="kanaly/kanal/xmltv.xml.gz";


-----
Иногда, пока не спросишь - сам не поймешь
 
 Top
Segol
Отправлено: 05 Ноября, 2013 - 14:41:58
Post Id


Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




да , только файл теперь xmltv.xml.tgz


если закачиват tgz и переименовывть в gz эта ошибка прописывается в самом файле.


тепер файл чистый..но при открытии данные с ошибкой описаной ранее..
вообщем открывает фаил и читает его не правельно..
 
 Top
anakoman
Отправлено: 05 Ноября, 2013 - 14:49:47
Post Id


Гость


Покинул форум
Сообщений всего: 119
Дата рег-ции: Май 2013  


Помог: 1 раз(а)




Я думаю вся ошибка в том, что это разные типы архивов и простым переименованием, здесь обходиться нельзя.

http://www[dot]linuxlib[dot]ru/Linux/arh2[dot]htm


-----
Иногда, пока не спросишь - сам не поймешь
 
 Top
Segol
Отправлено: 07 Ноября, 2013 - 18:39:17
Post Id


Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




Спасибо думаю в этом была проблема..
сделал по другому , выбор данных не с упакованного ХМЛ..
бюсь теперь над другим..
как можно выбрать данные в пхп что бы получилось что то подобное..

// кусок xmltv.xml
<programme start="20131104024500 +0200" stop="20131104040000 +0200" channel="1">
<title lang="ru">Кириенко</title>
</programme>
// кусок


PHP:
скопировать код в буфер обмена
  1. $xml = "xmltv.xml";
  2. foreach($xml->programme) {
  3. $start= programme->start;
  4. $stop= programme->stop;
  5. $channel= programme->channel;
  6. $title= programme->title;
  7. $lang= programme->title->lang;
  8. $i++;
  9.  
  10. echo $channel."<br />".$start."<br />."$stop"";
  11. }

(Отредактировано автором: 07 Ноября, 2013 - 18:40:11)

 
 Top
anakoman
Отправлено: 08 Ноября, 2013 - 08:59:29
Post Id


Гость


Покинул форум
Сообщений всего: 119
Дата рег-ции: Май 2013  


Помог: 1 раз(а)




ты собираешься при помощи php сформировать XML-файл?


-----
Иногда, пока не спросишь - сам не поймешь
 
 Top
Segol
Отправлено: 08 Ноября, 2013 - 14:57:25
Post Id


Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




нет при помощи пхп получить данные с хмл в переменные пхп и записать в базу. ,
anakoman , будь добр читкни пример ---- .(
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« XML и его обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB