Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   XML+PHP: проблема загрузки данных (http://www.flasher.ru/forum/showthread.php?t=116409)

Offi 29.09.2008 23:24

XML+PHP: проблема загрузки данных
 
Здравствуйте!
Есть видео-галлерея, которая подгружает список категорий и непосредственно файлов из XML-документа. Локально, подгрузка данных из file.xml , успешно проходит и ролик обрабатывает данные. На сервере php-скрипт генерирует XML-файл, заполняя его данными из mysql-базы. При загрузке данных с сервера из генерируемого документа ролик не хочет обрабатывать данные. Думал, что некорректно генерируется хмл-файл, но сохранение полученных с сервера данных в file.xml показало, что документ корректно загружается и обрабатывается локально. При запуске ролика из среды разработки и загрузке данных с сервера используя Debug/List variables обнаружил, что файл был загружен в ролик, но данные обрабатыватся не стали :(

Код загрузки данных:
Код:

var path = "http://mysite.ru/video/xml.php";
var myxml = new XML();
myxml.ignoreWhite = true;
myxml.onLoad = function(success)
{
        var cats = this.firstChild.childNodes;
        if (success)
        {
            for (var n:Number = 0; n < cats.length; n++)
            {
                trace(cats[n].attributes.name); // выдает - undefined
            }
        }
}

Код http://mysite.ru/video/xml.php:
Код:

<?
require('mysql.php');
// $data - массив с данными из базы
echo '<?xml version="1.0" encoding="utf-8"?>';
echo '<VideoLibrary>';
for ($i = 0; $i < count($data); $i++)
{
        echo '<category name="'.$data[$i][0][0].'">';
        for ($j = 1; $j < count($data[$i]); $j++)
        {
                echo '<list name="'.$data[$i][$j]['name'].'"></list>';
        }
        echo '</category>';
}
echo '</VideoLibrary>';
?>

Возможно кто-то знает, что за грабли, подскажите пожалуйста!

dimarik 29.09.2008 23:49

1. Покажите результат работы скрипта в виде XML.
2. В личку скиньте адрес удаленного сервера и путь к скрипу. Попытаюсь проанализовать ответ сервера.

Offi 30.09.2008 00:42

Добавил в пхп-файл вначале:
Код:

<?
header('Content-type: application/xml; charset="utf-8"',true);
...

теперь при просмотре полученных данных через Оперу вылазит ошибка
Код:

XML parsing failed: syntax error (Line: 1, Character: 0)

Reparse document as HTML
Error:unexpected text (non-whitespace text outside root element)
Specification:http://www.w3.org/TR/REC-xml/

и красным цветом показывает что перед
Код:

<?xml version="1.0" encoding="utf-8"?>
есть пробел! но в коде пхп-файла нет вывода никаких знаков до этой строчки и до символов "<?"...

dimarik 30.09.2008 01:09

там не пробел а последовательность символов (скопировано из UltraEdit в HEX режиме):
Код:

00000000h: FF FE 3F 04 BB 00 57 04 3F 04 BB 00 57 04 3C 00 ; яю?.».W.?.».W.<.
00000010h: 3F 00 78 00 6D 00 6C 00 20 00 76 00 65 00 72 00 ; ?.x.m.l. .v.e.r.
00000020h: 73 00 69 00 6F 00 6E 00 3D 00 22 00 31 00 2E 00 ; s.i.o.n.=.".1...
00000030h: 30 00 22 00 20 00 65 00 6E 00 63 00 6F 00 64 00 ; 0.". .e.n.c.o.d.
00000040h: 69 00 6E 00 67 00 3D 00 22 00 75 00 74 00 66 00 ; i.n.g.=.".u.t.f.
00000050h: 2D 00 38 00 22 00 3F 00 3E 00 3C 00 56 00 69 00 ; -.8.".?.>.<.V.i.

Update
Мой IE7 закрывается сразу после попытки открыть сохраненные результаты ответа от Вашего скрипта. У Firefox вопросов не возникает и открывает xml корректно. При открытии с Вашего сайта IE7 говорит об ошибке парсинга xml на строке:

Ошибка в элементе верхнего уровня документа. Ошибка при обработке ресурса ''http://zzzzzzz/new/post/video/xml.php...

<?xml version="1.0" encoding="utf-8"?><VideoLibrary><category name="VFX"><list name="Toxic" videotitle...


Update2
Локальный файл flash-ролик парсит корректно. Удаленный файл не парсит, но данные получает, поставьте трейс и увидите:
Код:

var path = "http://zzzzzzz/new/post/video/xml.php";
var myxml = new XML();
myxml.ignoreWhite = true;
myxml.onLoad = function(success) {
        var cats = this.firstChild.childNodes;
        if (success)        {
                trace('doc: '+ this)
        }
}
//myxml.load("Edit1.xml");
myxml.load(path);

Мой вывод: забиваю на свой IE7, а Вы избавляетесь от паразитных символов в начале ответа сервера.

etc 30.09.2008 02:46

Похоже на DOM-метку, только она тут раза три повторяется.

Molecula 30.09.2008 03:01

Похоже на BOM метку.
Сохраняйте файл, как "UTF-8 without BOM", можно использовать HTMLPad или WeBuilder, или другое.

Offi 30.09.2008 21:38

Цитата:

Сохраняйте файл, как "UTF-8 without BOM"
сделал. непомогло. Но! в пхп-файл который генерировал хмл инклудился файл-класс обеспечивающий доступ к данным из базы. перекодировал его в UTF-8 without BOM и все заработало! :)
Спасибо всем кто отозвался!

GoodWin74 29.07.2009 11:11

с PHP тож проблемка! Не могу понять как загрузить XML через Переменную.
т.е. в переменной $xml у меня лежит текст из нормальной XML-ки пробовал прям её разбирать $xml->text[0]; не катит...
Может её както самому парсить надо или как??? тектс примерно такой:

Код:

<?xml version="1.0" encoding="utf-8"?>
<general>
 <text>502</text>
</general>


Mnilionic 29.07.2009 11:19

вам в PHP раздел.
для работы с XML в PHP есть библиотеки.


Часовой пояс GMT +4, время: 06:49.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.