Чтение сгенерированного php XML во flash? - PullRequest
2 голосов
/ 10 марта 2010

Вот часть 1 нашей проблемы (Загрузка динамически сгенерированного XML-файла как PHP во Flash) .

Теперь мы смогли заставить Flash читать XML-файл, но мы можем правильно видеть Flash-рендеринг только при тестировании (тестовом фильме) из реальной программы Flash. Однако, когда мы загружаем наши файлы онлайн для предварительного просмотра, Flash не отображается правильно, пропуская некоторую важную информацию (миниатюры, заголовки, видео и т. Д.).

Дополнительная информация:

SWF-файл существует в Домене 1 Оба файла XML и PHP существуют в Домене 2 А HTML-файл с кодом для вставки находится в Домене 3

Хотите знать, может ли это быть междоменной проблемой? У нас есть один из этих файлов в Домене 1 и 2, к которому у нас тоже есть доступ, однако для Домена 3 у нас не может быть файла crossdomain.xml.

Вот код PHP:

$xml = new XMLWriter();
$xml->openMemory();
$xml->setIndent(true);
$xml->setIndentString("\t");
$xml->startDocument();
$xml->startElement('data');
$xml->startElement('config');
    $xml->startElement('hex');
        $xml->writeCData('0x' . $widget_profile['background_color']);
    $xml->endElement();
    $xml->startElement('width');
        $xml->writeCData($widget_profile['width']);
    $xml->endElement();
    $xml->startElement('height');
        $xml->writeCData($widget_profile['height']);
    $xml->endElement();
    $xml->startElement('fullscreen');
        $xml->writeCData('false');
    $xml->endElement();
    $xml->startElement('special');
        $xml->writeCData('false');
    $xml->endElement();
    $xml->startElement('specialName');
        $xml->writeCData('Tools & Offers');
    $xml->endElement();
    $xml->startElement('specialLink');
        $xml->writeCData('XXXXXX');
    $xml->endElement();
    $xml->startElement('client');
        $xml->writeCData($widget_profile['site_url']);
    $xml->endElement();
$xml->endElement();

if (count($widget_content) > 0) {
    foreach ($widget_content as $tab) {
        $xml->startElement('tab');
        $xml->writeAttribute('id', $tab['tabname']);

        if (count($tab['video']) > 0) {
            foreach ($tab['video'] as $video) { 
                $video_sql = "select VID, flvdoname, title
                              from video 
                              where VID='" . $video . "'";

                $video_result = $howdini->query($video_sql);

                if ($video_result->rowCount() > 0) {
                    foreach ($video_result as $video_row) {

                        $video_row['flvdoname'] = substr($video_row['flvdoname'], 35, -4);

                        $xml->startElement('vid');
                        $xml->writeAttribute('flv', $video_row['flvdoname']);
                        $xml->writeAttribute('thumb', 'XXXXXXXXX' . $video_row['VID'] . '.jpg');
                        $xml->writeAttribute('title', $video_row['title']);
                        $xml->endElement();
                    }
                }

            }
        }

        $xml->endElement();
    }
}
$xml->endElement();
$xml->endDocument();
header('Content-Type: text/xml; charset=UTF-8');
echo $xml->flush();

Заранее спасибо за любые ответы! РЕДАКТИРОВАТЬ: я включил изменения, и теперь Firebug видит XML. Сейчас он просто не видит SWF-файл, но я вижу SWF-файл в других частях страницы.

Ответы [ 2 ]

1 голос
/ 11 марта 2010

Я думаю, это был ответ. Мне нужно было добавить charset = UTF-8 в мой php. Теперь все, кажется, работает как запланировано.

1 голос
/ 10 марта 2010

Не полное решение, а просто точка данных (потому что проблемы с кодированием - отстой). Когда я скачал ваш XML через статический файл и PHP-файл и распространил их, я получил следующие результаты

% diff php.xml static.xml
1c1
< <?xml version="1.0"?>
---
> <?xml version="1.0"?>
10a11
>
19a21
>

Ваш статический файл имеет дополнительный символ "не ASCII" в начале.

Полагаю, у вашего статического XML-файла есть спецификация UTF-8, чего нет у сгенерированного PHP файла, и что ваш флэш-фильм ожидает файл UTF-8. Я бы попробовал создать BOM с вашим файлом PHP XML и посмотреть, поможет ли это, или поиграться с настройками кодировки вашего сервера.

Попробуйте изменить свой PHP, чтобы он выводил следующий заголовок (соответствующий веб-странице, в которую встроен фильм).

header('Content-Type: text/html; charset=UTF-8') 
...