Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   XML десериализация (http://www.flasher.ru/forum/showthread.php?t=81444)

alexGoHome 20.06.2006 00:05

XML десериализация
 
Уважаемые господа.
У меня трудности при передачи XML с сервера на флеш клиента. Сервер - асинхронный сокет, написан на C#. Проблема в том, что я сериализую объект и получаю строку вида:
Код:

<?xml version="1.0" encoding="utf-16"?>

<ForSerializeField xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <State1>

    <int>0</int>

    <int>0</int>

    <int>0</int>

    <int>0</int>

    <int>0</int>

  </State1>
</ForSerializeField>

Строка в таком виде приходит в onXML на клиента, но АС не может ее распознать как XML.

Код:

mySocket.onXML = function(msg)
{
        var e = msg.firstChild;
        //или так  var e = new XML(msg);
        if (e != null && e.nodeName == "ForSerializeField") {
                trace(msg);
        }

здесь e.nodeName = null и в других случаях :(
Подскажите пожалуйста как мне к моим нулям подобраться :)

Спасибо.

Sneg 20.06.2006 02:01

Код:

import mx.utils.Delegate;

mySocket.onData = Delegate.create(this,onXMLData);

function onXMLData(text:String):Void{
        var xml:XML=new XML();
        xml.ignoreWhite=true;
        xml.parseXML(text);
            onXML(xml);               
};

function onXML(xml:XML):Void{
  trace(xml.toString());
};


alexGoHome 20.06.2006 03:12

я так пробовал, не помогает, правда без делегата. обычный onData и onXML использовал.
Скажу больше, пробовал посылать строку "<Test name=kuku text=koko />"
принимает, читает атрибуты, все четко работает.

Sneg 20.06.2006 04:55

Вложений: 1
За неимением XMLSocket'a использовал LoadVars, думаю разницы в данном случае никакой нет - тоже событие onData. XML использовал тот,то был в твоем первом сообщении.

Juice_Green 20.06.2006 09:16

просто на onXML у тебя приходит строка, сделай из нее XML
а ошибка в том - что в приходящем ответе есть такие узлы как \t или \n
просто создай на основе ответа новую xml и работай с ней

Код:

mySocket.onXML = function(msg)
{
       
        var answerXML:XML = new XML();
        answerXML.ignoreWhite = true;
        answerXML.parseXML(msg);
        trace(answerXML);
         
              var e:XMLNode = answerXML.firstChild;
        trace(msg);
        }


alexGoHome 21.06.2006 02:15

Спасибо всем!
заработало после того как одстранил объявление типа,
var answerXML:XML = new XML(); -> var answerXML = new XML();

в чем разница, я вроде в АС2 пишу ?


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

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