Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   XML неправильно загружается (http://www.flasher.ru/forum/showthread.php?t=143673)

tik_webmaster 22.08.2010 22:23

XML неправильно загружается
 
загружаю xml сохраненный в переменной из файла 32.php

Код AS3:

import flash.display.Sprite;
    import flash.events.*;
    import flash.net.*;
 
 
            var loader:URLLoader = new URLLoader();
            configureListeners(loader);
 
            var request:URLRequest = new URLRequest("http://localhost/lv/32.php");
            try {
                loader.load(request);
            } catch (error:Error) {
                trace("Unable to load requested document.");
 
 
function configureListeners(dispatcher:IEventDispatcher):void {
            dispatcher.addEventListener(Event.COMPLETE, completeHandler);
 
        }
 
 function completeHandler(event:Event):void {
            var loader:URLLoader = URLLoader(event.target);
 
 
            var vars:URLVariables = new URLVariables(loader.data);
 
                        var xmlMenu:XML = new XML();
                        xmlMenu=XML(vars.xmlmenu);
 
                        trace(xmlMenu.child("items")[0].toXMLString());
}}

в php файле написано

PHP код:

<?php 
$xmlmenu 
= "



<menuelements>
<items>
    <item>
            <label>Home</label>
               <linkTo>http://localhost/samvar4/index.php?option=com_content&amp;view=frontpage&amp;lang=en</linkTo>
        </item>
    <item>
                <label>About Company</label>
               <linkTo>http://localhost/samvar4/index.php?option=com_content&amp;view=article&amp;id=3&amp;lang=en</linkTo>
        </item>
    <item>
            <label>Drilling</label>
            <linkTo>http://localhost/samvar4/index.php?option=com_content&amp;view=article&amp;id=2&amp;lang=en</linkTo>
        </item>
    <item>
            <label>Construction of wells</label>
            <linkTo>http://localhost/samvar4/index.php?option=com_content&amp;view=article&amp;id=9&amp;lang=en</linkTo>
        </item>
    <item>
            <label>Filtering</label>
            <linkTo>http://localhost/samvar4/index.php?option=com_content&amp;view=article&amp;id=10&amp;lang=en</linkTo>
        </item>
</items>


</menuelements>




" 
; 


/*
print the variables to the output in order to let flash read them 
*/

$vars = "" ; 
$vars .= "xmlmenu=" . $xmlmenu  ; 


echo 
$vars ; 
?>


выдает ошибку


TypeError: Error #1085: The element type "linkTo" must be terminated by the matching end-tag "</linkTo>".
at _fla::MainTimeline/completeHandler()
at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/flash.net:URLLoader::onComplete()



может быть причина в специальных символах в теге linkTo ??

подскажите пожалуйста

expl 22.08.2010 22:39

Видать на знаках вопроса где-то сыпется, плюс Вы в переменную засовываете строку со спецсимволами - оно может ее распарсить как несколько переменных
1. Посмотрите, что вы на самом деле получаете в переменной vars.xmlmenu
2. Если получаете хрень - то подумайте, надо ли вообще это пихать в переменную,
почему просто не загрузить xml-ку как обычный текст и распарсить?

Да и pnp здесь чего делает? Можно же просто xml-ку загрузить, уж не изощренная ли это система защиты от кеширования в бравзере?

tik_webmaster 22.08.2010 22:53

1. vars.xmlmenu - та же ошибка
2. вариант с загрузкой отдельного xml не подходит. Нужны динамические данные.

Может нужно запихнуть написанное в linkTo в какой то спецсимвол ?
Или представить всe этo в каком-то другом виде?

expl 22.08.2010 23:29

Не, что мешает написать так:
PHP код:

<?php  
$xmlmenu 
= " 



<menuelements> 
<items> 
    <item> 
            <label>Home</label> 
               <linkTo>http://localhost/samvar4/index.php?option=com_content&amp;view=frontpage&amp;lang=en</linkTo> 
        </item> 
    <item> 
                <label>About Company</label> 
               <linkTo>http://localhost/samvar4/index.php?option=com_content&amp;view=article&amp;id=3&amp;lang=en</linkTo> 
        </item> 
    <item> 
            <label>Drilling</label> 
            <linkTo>http://localhost/samvar4/index.php?option=com_content&amp;view=article&amp;id=2&amp;lang=en</linkTo> 
        </item> 
    <item> 
            <label>Construction of wells</label> 
            <linkTo>http://localhost/samvar4/index.php?option=com_content&amp;view=article&amp;id=9&amp;lang=en</linkTo> 
        </item> 
    <item> 
            <label>Filtering</label> 
            <linkTo>http://localhost/samvar4/index.php?option=com_content&amp;view=article&amp;id=10&amp;lang=en</linkTo> 
        </item> 
</items> 


</menuelements> 




" 
;  


/* 
print the variables to the output in order to let flash read them  
*/ 

echo  $xmlmenu;  
?>

А если все-же нужно несколько переменных возвращать - то придется текст xml перегнать в escape-последовательность urlencod-ом каким-нибудь

tik_webmaster 22.08.2010 23:53

так Flash не может найти переменную xmlmenu из php
не знаю почему

PHP код:

/*
print the variables to the output in order to let flash read them 
*/

$vars = "" ; 
$vars .= "xmlmenu=" . $xmlmenu  ; 


echo 
$vars ; 
?> 

print the variables to the output in order to let flash read them наверно так надо

NumpuT 23.08.2010 14:33

в PHP нужно указать или тот или тот тип файла
PHP код:


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

а в AS3 я делал так
Код AS3:

public var getRssHttp:HTTPService = new HTTPService( );
getRssHttp.url = "http://rss.site.com/getRSS.php";                               
getRssHttp.makeObjectsBindable = true;
getRssHttp.useProxy= false;
getRssHttp.resultFormat = "text";

getRssHttp.resultFormat = "text"; должно быть text и тогда ошибки не вылетают но тогда содержимое полученого на вашей совести :D

tik_webmaster 23.08.2010 15:09

спасибо всем

я нашел решение
надо все специальные символы кодировать в URL
например
вместо

http://localhost/samvar4/index.php?o...ge&amp;lang=en

надо писать

http%3A2F%2Flocalhost%2Fsamvar4%2Findex.php%3Foption%3Dcom_content%26amp%3Bview%3Dfrontpage%26amp%3Blang%3Den

alatar 23.08.2010 15:19

Цитата:

Сообщение от tik_webmaster (Сообщение 930804)
надо все специальные символы кодировать в URL

достаточно использовать ![CDATA[]]


Часовой пояс GMT +4, время: 06:14.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.