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
Форумы портала PHP.SU :: Версия для печати :: Проблема с обработкой данных с фаила хмл
Форумы портала PHP.SU » » XML и его обработка » Проблема с обработкой данных с фаила хмл

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

1. Segol - 04 Ноября, 2013 - 18:27:59 - перейти к сообщению
Добрый день друзья..помогите с вопросом ..

есть скрипт .который закачивает файл .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
2. anakoman - 04 Ноября, 2013 - 20:14:40 - перейти к сообщению
А структура каталогов на разных сайтах одинаковая?

Цитата:
$stringu ="kanaly/kanal/xmltv.xml.gz";
3. Segol - 04 Ноября, 2013 - 20:28:28 - перейти к сообщению
тот что работает файл 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

думаю и за этого ошибка
почему и как с этим бороться ?
4. anakoman - 05 Ноября, 2013 - 10:20:05 - перейти к сообщению
Цитата:
с первого сайта teleguide.info всё работает как положено..


Скажите, на сайте vipiko.tv вы берете тот же саймый архив .tgz или уже .gz ?
5. Segol - 05 Ноября, 2013 - 13:35:51 - перейти к сообщению
нет.. с рабочего сайта берёт gz и yпаковает в gz

с неработающего (vipiko.tv ) берёт в tgz a упаковывает в gz
6. anakoman - 05 Ноября, 2013 - 13:41:39 - перейти к сообщению
ну сделай также как на рабочем
7. Segol - 05 Ноября, 2013 - 14:05:13 - перейти к сообщению
anakoman пишет:
ну сделай также как на рабочем


сделал.. переименованный и закавыченный файл теперь чистый
но выводит данные всё рвно с данной ощибкой..
8. anakoman - 05 Ноября, 2013 - 14:11:32 - перейти к сообщению
Попробуй сформулировать проблему еще раз (т.е. как есть сейчас), чет я запутался
9. Segol - 05 Ноября, 2013 - 14:19:35 - перейти к сообщению
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 имеет другие функзии открытия . ?
10. anakoman - 05 Ноября, 2013 - 14:32:32 - перейти к сообщению
Как я понимаю

$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";
11. Segol - 05 Ноября, 2013 - 14:41:58 - перейти к сообщению
да , только файл теперь xmltv.xml.tgz


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


тепер файл чистый..но при открытии данные с ошибкой описаной ранее..
вообщем открывает фаил и читает его не правельно..
12. anakoman - 05 Ноября, 2013 - 14:49:47 - перейти к сообщению
Я думаю вся ошибка в том, что это разные типы архивов и простым переименованием, здесь обходиться нельзя.

http://www[dot]linuxlib[dot]ru/Linux/arh2[dot]htm
13. Segol - 07 Ноября, 2013 - 18:39:17 - перейти к сообщению
Спасибо думаю в этом была проблема..
сделал по другому , выбор данных не с упакованного ХМЛ..
бюсь теперь над другим..
как можно выбрать данные в пхп что бы получилось что то подобное..

// кусок 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. }
14. anakoman - 08 Ноября, 2013 - 08:59:29 - перейти к сообщению
ты собираешься при помощи php сформировать XML-файл?
15. Segol - 08 Ноября, 2013 - 14:57:25 - перейти к сообщению
нет при помощи пхп получить данные с хмл в переменные пхп и записать в базу. ,
anakoman , будь добр читкни пример ---- .(

 

Powered by ExBB FM 1.0 RC1