Flash不喜欢我的格式化XML

时间:2011-06-03 19:13:59

标签: php xml flash actionscript-3

我收到以下错误:

#1088: The markup in the document following the root element must be well-formed

我正在调用来自AS3的php脚本,该脚本从网站获取一些XML数据并将其回显到页面。

 myLoader.load(new URLRequest("http://www.mywebsite.com/my_test/my_Weather.php"));

解决跨域问题。

在浏览器中查看源代码时的XML:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<?xml-stylesheet href="latest_ob.xsl" type="text/xsl"?>
<current_observation version="1.0"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="http://www.weather.gov/view/current_observation.xsd">
    <credit>NOAA's National Weather Service</credit>
    <credit_URL>http://weather.gov/</credit_URL>
    <image>
        <url>http://weather.gov/images/xml_logo.gif</url>
        <title>NOAA's National Weather Service</title>

        <link>http://weather.gov</link>
    </image>
    <latitude>41.27</latitude>
    <longitude>-80.67</longitude>
    <observation_time>Last Updated on Jun 3 2011, 1:51 pm EDT</observation_time>
        <observation_time_rfc822>Fri, 03 Jun 2011 13:51:00 -0400</observation_time_rfc822>
    <weather>Mostly Cloudy</weather>
    <temperature_string>71.0 F (21.7 C)</temperature_string>
</current_observation>

我注意到它正在使用XSL文件来设置浏览器中的数据样式。 我认为这导致了这个问题:

我的php my_Weather.php:

<?PHP

//ini_set("display_errors","2");
//ERROR_REPORTING(E_ALL);

header('Content-type: text/xml');

$xml_data = file_get_contents("http://www.weather.gov/xml/current_obs/KYNG.xml");

echo $xml_data

?>

最后是我的动作脚本:

var myXML:XML;
var myLoader:URLLoader = new URLLoader();

myLoader.load(new URLRequest("http://www.mywebsite.com/my_test/my_Weather.php"));
myLoader.addEventListener(Event.COMPLETE, processXML);

function processXML(e:Event):void {
    trace("load XML");
    myXML = new XML(e.target.data);
    trace(myXML);
    show_temp(myXML);
}

function show_temp(myXML):void
{
    temp_info.text = myXML.temp_f[0];
}

stop();

非常直接。但我不确定为什么我没有将XML导入Flash。即使我用php删除所有的XSL数据仍然不喜欢格式化。

请帮忙。

1 个答案:

答案 0 :(得分:1)

也许,这不会直接帮助你,但我测试了你的代码,一切正常:XML内容在调试模式下跟踪。我使用相同的AS3代码*并在我的Web服务器上提供了一个完全相同的PHP内容。

因此,我猜这个问题与显示的源代码无关,而且在于此处未显示的代码或者可能是Web服务器配置。

-

*变化:

  • 将网址更改为我自己的网络服务器
  • 将这些功能设为私有(使用FlashDevelop使用Flex SDK - 也许这就是问题所在。)
  • myXML = new XML(e.target.data); - &GT; var myXML:XML = new XML(e.target.data);