我将数据从MySQL提取到闪存中。首先我使用PHP查询数据库,然后我回显结果。
$sql = "SELECT path FROM video WHERE id = 52";
$resource = mysqli_query($conn,$sql);
$row = mysqli_fetch_assoc($resource);
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
echo "<video>\n";
echo "<path>" . $row['path'] . "</path>\n";
echo "</video>\n";
我只有一个根元素,并且我根据元素后面的标记看不出有什么问题......但是我又错了,我确定有错误。
---更改了我的标题,因此我在此处添加了错误消息---
TypeError: Error #1088: The markup in the document following the root element must be well-formed.
------ 已编辑 ------
$ row [&#39; path&#39;]的值是来自我的数据库的字符串。我知道它有效,因为我删除了所有xml标记并回显了$ row [&#39; path&#39;]这是视频的网址路径。我也使用了gettype(),它输出了一个字符串。
当我在浏览器中打开此文件时,我实际上什么都看不到。它是一个空白页面,但是因为浏览器将其呈现为html元素,所以我不认为这是问题所在。但是当我查看源代码时,我得到了这个
<?xml version="1.0" encoding="UTF-8"?>
<video>
<path>1.mp4</path>
</video>
另外,我创建了一个带有xml扩展名的随机文件,其中包含上面的xml内容,(将其复制到我的php文件输出的View Source中),它运行正常。我在Flash中看到了内容。在php文件中回显它可能有什么问题?我正在使用textWrangler。它可能与BOM有关,有什么建议吗?
----编辑编号二---
这是我的动作脚本代码。我还是新手,所以我没有把它放在课堂上但是在我的动作层的第一帧内。我只是想让基础工作起作用。
var theXML:XML;
var xmlReq:URLRequest = new URLRequest("../folderExample/poop.php");
var xmlLoader:URLLoader = new URLLoader();
function xmlLoaded(event:Event):void{
theXML = new XML(xmlLoader.data); // The Error occurs here.
trace(theXML.toXMLString());
}
xmlLoader.load(xmlReq);
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);
答案 0 :(得分:0)
来自http://www.flashdevelop.org/community/viewtopic.php?f=13&t=3128
格式良好的XML返回 TypeError:错误#1088:根元素后面的文档中的标记必须格式正确, 通常问题是BOM。
Actionscript XML不会从传入文本中删除BOM(字节顺序标记)。 BOM是一个不可见的字符(#65279),它在ASP或php“echo”字符串的开头创建,以及一些文本编辑器,用于指示多字节文本的字节顺序。
您可以确认您的字符串是否包含此BOM字符:
trace( sXMLString.charCodeAt( 0 ) ); //outputs 65279
快速解决方案
sXMLString= sXMLString.replace( String.fromCharCode(65279), "" ) ;
myXML = new XML(sXMLString);
另见:
Reading php generated XML in flash?
How to load PHP dynamically generated XML in FLASH
如果您还没有,请从上面的第二个链接尝试添加:
header("Content-Type: text/xml");