加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在flash中读取php生成的XML?

发布时间:2020-12-15 07:33:02 所属栏目:百科 来源:网络整理
导读:这是我们的问题 (Loading a dynamically generated XML file as PHP in Flash)的第1部分. 现在我们能够让Flash读取XML文件,但是我们只能在实际的Flash程序中测试(测试影片)时正确地看到Flash渲染.但是,当我们在线上传我们的文件以预览Flash无法正确渲染时,会
这是我们的问题 (Loading a dynamically generated XML file as PHP in Flash)的第1部分.

现在我们能够让Flash读取XML文件,但是我们只能在实际的Flash程序中测试(测试影片)时正确地看到Flash渲染.但是,当我们在线上传我们的文件以预览Flash无法正确渲染时,会遗漏一些重要信息(缩略图,标题,视频等).

附加信息:

域1上存在SWF文件
XML& PHP文件都存在于域2上
嵌入代码的HTML文件位于Domain 3上

想知道这是否可能是跨域问题?我们在域1和域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文件.

解决方法

不是一个完整的解决方案,而只是一个数据点(因为编码问题很糟糕).当我通过静态文件和PHP文件下载XML并对它们进行区分时,我得到了以下结果

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

您的静态文件在其开头有一个额外的“非ASCII”字符.

我的猜测是你的静态XML文件有一个PHP生成的文件没有的UTF-8 BOM,而且你的flash电影期待一个UTF-8文件.我会尝试使用你的PHP XML文件generating a BOM并看到它有所帮助,或者摆弄你的服务器的编码设置.

尝试更改PHP,以便输出以下标题(匹配嵌入电影的网页).

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读