以下是我们问题(Loading a dynamically generated XML file as PHP in Flash)的第1部分。
现在我们能够让Flash读取XML文件,但是我们只能在实际Flash程序中测试(测试影片)时正确地看到Flash渲染。但是,当我们在线上传我们的文件以预览Flash无法正确渲染时,会遗漏一些重要信息(缩略图,标题,视频等)。
域1上存在SWF文件 XML& PHP文件都存在于域2上 带嵌入代码的HTML文件位于Domain 3
想知道这是否可能是跨域问题?我们在Domain 1& amp;上有一个这样的文件。 2我们也可以访问,但对于Domain 3,我们不能在那里有一个crossdomain.xml文件。
$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文件。
答案 0 :(得分:1)
不是完整的解决方案,而只是一个数据点(因为编码问题很糟糕)。当我通过静态文件和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')
答案 1 :(得分:1)
我猜这就是答案。我需要将charset = UTF-8添加到我的php中。现在一切似乎都在按计划进行。