PDA

Просмотр полной версии : Сохранение XML


swat05
22.08.2008, 14:51
Мне надо сохранить обьект типа XML на жесткий диск, но не через оболочку - тоесть чтобы потом его можно было опубликовать на сайте. Знаю что функция SaveAndLoad сохраняет, но как я понял в браузер, т.е. надо публиковать в хтмл, но вот как сохранить этот хмл в папку на сервере, допустим "xml/data.xml"? Или для этого нужно знать ещё и php?

Alkaz
22.08.2008, 14:59
это вы где saveAndLoad нашли? знаю только sendAndLoad, передает ваш xml скрипту и грузит ответ, с помощью нее (или проще send) и скрипта (например php) можете сохранять на сервер

MrPoma
22.08.2008, 15:15
SharedObject

swat05
22.08.2008, 15:32
Alkaz, вы правы sendAndLoad, опечатка. Можно линк на пример, а то я впервые этим занимаюсь. Тут на форуме когда-то такое видел, давно, но теперь даже поиском найти не могу(( Буду очень благодарен.

MrPoma
22.08.2008, 16:31
var login_str:String = "<login username=\""+username_txt.text+"\" password=\""+password_txt.text+"\" />";
var my_xml:XML = new XML(login_str);
var myLoginReply_xml:XML = new XML();
myLoginReply_xml.ignoreWhite = true;
myLoginReply_xml.onLoad = myOnLoad;
my_xml.sendAndLoad("http://www.flash-mx.com/mm/login_xml.cfm", myLoginReply_xml);
function myOnLoad(success:Boolean) {
if (success) {
if ((myLoginReply_xml.firstChild.nodeName == "packet") &&
(myLoginReply_xml.firstChild.attributes.success == "true")) {
gotoAndStop("loggedIn");
} else {
gotoAndStop("loginFailed");
}
} else {
gotoAndStop("connectionFailed");
}
}

swat05
23.08.2008, 11:22
Пример из хелпа я тоже видел. Я во флеше уже немного понимаю, а меня интересует как должен выглядеть php файл, который не проверяет пароль, а сохраняеет данные переданные флешем на сервер.

Obi
23.08.2008, 14:14
Ну вот как-то так:

var myXML:XML = "<root><test>someText</test></root>";
var way:String = "http://somePath/serv.php";
var send:LoadVars = new LoadVars();
var load:LoadVars = new LoadVars();

send.myDataSend = myXML;
send.sendAndLoad(way, load);
load.onLoad = function(){
trace(load.serverResponse);
}


serv.php :

<?
if(isset($_POST["myDataSend"]))
{
$str=$_POST["myDataSend"];
$p=fopen("myXml.xml","w");
$s= $str;
echo "serverResponse=$str";
fputs($p,$s);
fclose($p);
}
?>

Хотя, возможно, этот вариант слегка быдлокодерский с точки зрения пхп.
P.S.: Писал на «коленке», но работать должно.

swat05
23.08.2008, 14:45
возвращает undefined((( Как тут можно что-то сделать?

Obi
23.08.2008, 15:02
возвращает undefined((( Как тут можно что-то сделать?
Блин, дико извиняюсь, ошибка в строке

$str=$_POST["send1"];

Предыдущий пост исправил.

swat05
24.08.2008, 01:21
Спасибо, что помогаете, но тут опять возникает проблема. Я закинул пхп на свой сайт и переделал свф под ХМЛ, а не на loadVars, но почему то трейсит что-то совсем не то<SCRIPT language="JavaScript">var lgn=&apos;flashki&apos;</SCRIPT> вот код свф - var login_str:String = "<root><test>someText</test></root>";
var myXML:XML = new XML(login_str);
var myDataSend:XML = new XML();
myDataSend.ignoreWhite = true;
myDataSend.onLoad = myOnLoad;
myXML.sendAndLoad("http://flashki.ho.ua/serv.php", myDataSend);
function myOnLoad(success:Boolean) {
if (success) {
trace(myDataSend.firstChild);
}
}
З.Ы. Хостинг поддерживает ПХП.
З.Ы.Ы. Упс. Помойму мой хостинг ХМЛ не читает((( Значит выход - делать из своего компа сервер? или мот кто бесплатный хост порекомендует с хмл и пхп?

etc
24.08.2008, 11:44
З.Ы.Ы. Упс. Помойму мой хостинг ХМЛ не читает((( Значит выход - делать из своего компа сервер? или мот кто бесплатный хост порекомендует с хмл и пхп?

Т. е. вы хотите сказать, что у вас такой уникальный хостинг, который обычные текстовые файлы с определенно отформатированным содержимым не переваривает?

Obi
24.08.2008, 12:52
... но почему то трейсит что-то совсем не то

Что именно трейсит?

swat05
24.08.2008, 13:27
__etc, ну я не знаю, т.к. нигде не нашол что хостинг поддерживает ХМЛ. У меня ж бесплатный хостинг.
Obi, как я уже говорил, изменил код под ХМЛ, а вместо трейса serverResponses я трейсю содержимое первого дочернего узла ХМЛ. Но трейсит что-то не то - <SCRIPT language="JavaScript">var lgn=&apos;flashki&apos;</SCRIPT>

Obi
24.08.2008, 13:41
попробуйте изменить в пхп файле эти строки:

if(isset($_POST["myDataSend"]))
{
$str=$_POST["myDataSend"];


на

if(isset($_POST))
{
$str=$_POST;

swat05
24.08.2008, 13:45
возвращает serverResponse=ArrayНа серве создается новый хмл с текстом Array.

Obi
24.08.2008, 13:54
возвращает serverResponse=ArrayНа серве создается новый хмл с текстом Array.

Блин, ну во-первых, от сервера вам валидный хмл придти не может, сервер отправляет вам скорее всего что-то типа:

serverResponse=<root><test>someText</test></root>

Соответственно, чтобы пришел валидный хмл, нужно строку

echo "serverResponse=$str";

заменить на

echo "$str";

Тогда от сервера вам придет в точности то, что вы отправили.
От этого и пляшите дальше. Да и к тому-же, не трейсите firstChild — его всегда успеете, трейсите для начала полный ответ, чтобы видеть картину происходящего.

etc
24.08.2008, 13:57
__etc, ну я не знаю, т.к. нигде не нашол что хостинг поддерживает ХМЛ. У меня ж бесплатный хостинг.[/CODE]
XML — это текстовый файл. И всё. Если хостинг поддерживает заливку файлов на сервер, то и XML, txt и вообще любые файлы тоже.

swat05
24.08.2008, 14:21
Obi, большое спасибо. Я в свф позорную ошибку допустил. И правда, мой хостинг поддерживает ХМЛ.