Flash не нравится мой Formtted XML - PullRequest
0 голосов
/ 03 июня 2011

Я получаю следующую ошибку:

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

Я вызываю php-скрипт из AS3, который захватывает некоторые данные 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. Даже если я вычеркну все данные XSL с помощью php, все равно форматирование не понравится.

пожалуйста, помогите.

1 Ответ

1 голос
/ 04 июня 2011

Возможно, это не поможет вам напрямую, но я проверил ваш код, и все здесь работает нормально: содержимое XML отслеживается в режиме отладки.Я использовал тот же код AS3 * и предоставил PHP с точно таким же содержимым на своем веб-сервере.

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

-

* Изменения:

  • изменил URL моего собственного веб-сервера
  • сделалфункции private (использование FlashDevelop с Flex SDK - может быть, это и есть проблема)
  • myXML = new XML (e.target.data);-> var myXML: XML = новый XML (e.target.data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...