PDA

Просмотр полной версии : XML неправильно загружается


tik_webmaster
22.08.2010, 22:23
загружаю xml сохраненный в переменной из файла 32.php

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
$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
$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
не знаю почему

/*
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 нужно указать или тот или тот тип файла


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

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


а в 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?option=com_content&amp;view=frontpage&amp;lang=en

надо писать

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

alatar
23.08.2010, 15:19
надо все специальные символы кодировать в URL

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