Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MySql + PHP + XML + FLASH, Пока только PH + XML 
:(
    Опции темы
AntonioBanderaz
  Дата 29.8.2005, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



Можно написать свой serialize/deserialize между двумя языками по средством XML...
Пока только релиазован сам принцып, без типов переменных, и тд. и только на PHP, а вообще из этого можно сделать крутую штуку, XML - это ведь не только с PHP связь можно сотворить, ну а например с JAVA, или ещё что-нидь.... Выкладываю исходники пока только PHP скрипта, всё равно мож кому пригодится... smile

Код

<?php
//Файлик xml.php
class xml{
    var $CASE_FOLDING=0;
    var $SKIP_WHITE=1;
    var $headline='<?xml version="1.0" encoding="Windows-1251" ?>';
    var $xml=false;
    var $values=false;
    var $index=false;
    var $tree=false;
    
    
    function xml(){
        return $this;
    }

    function xml2arr($xml=false){
        if(!$xml) return false;
        if(substr(trim($xml), 0, 1)=='*'&&is_readable(substr(trim($xml), 1))) $this->xml=str_replace("\r", '', implode('', file(substr(trim($xml), 1))));
        elseif(substr(trim($xml), 0, 1)=='*'&&!is_readable(substr(trim($xml), 1))) die('(class)xml: Íå ìîãó ïðî÷èòàòü ôàéë.');
        else $this->xml=$xml;

        $pr=xml_parser_create();
        xml_parser_set_option($pr, XML_OPTION_CASE_FOLDING, $this->CASE_FOLDING);
        xml_parser_set_option($pr, XML_OPTION_SKIP_WHITE, $this->SKIP_WHITE);
        xml_parse_into_struct($pr, $this->xml, $this->values, $this->index);
        xml_parser_free($pr);

        $i=-1;
        $this->tree=$this->_get_depth($this->values, $i);
        return $this->tree;
    }

    function _get_depth($vals, &$i){
        $child=array();
        if(isset($vals[$i]['value'])) $child[]=$vals[$i]['value'];
        while(++$i<count($vals)){
            $type=$vals[$i]['type'];
            if($type=='open'){
                if(isset($vals[$i]['attributes'])) $attr=$vals[$i]['attributes']; else $attr=array();
                $child[$vals[$i]['tag']][]=array(
                    '#'=>$this->_get_depth($vals, $i),
                    '@'=>$this->_decode_attributes($attr),
                    );
            }elseif($type=='cdata'){
                $child[]=$this->_unconv_cdata($vals[$i]['value']);
            }elseif($type=='complete'){
                if(isset($vals[$i]['attributes'])) $attr=$vals[$i]['attributes']; else $attr=array();
                if(isset($vals[$i]['value'])) $value=$vals[$i]['value']; else $value=null;
                $child[$vals[$i]['tag']][]=array(
                    '#'=>$value,
                    '@'=>$this->_decode_attributes($attr),
                    );
            }elseif($type=='close'){
                return $child;
            }
        }
        return $child;
    }

    function arr2xml($arr=false, $headline=false, $fileName=false){
        if(!$arr) return false;
        $xml=$headline?$headline:$this->headline; $xml.="\n";
        $xml.=$this->_get_xml($arr, 0);
        $this->xml=$xml;

        if($fileName){
            if(!($fh=fopen($fileName, 'w'))) die('(class)xml: Íå ìîãó çàïèñàòü ôàéë!');
            flock($fh, LOCK_EX);
            $byte=fputs($fh, $xml);
            fclose($fh);
        }
        return $fileName?$byte:$xml;
    }

    function _get_xml($arr, $tabsi){
        $source=null; $tabs=null;
        $i=0; while(++$i<=$tabsi) $tabs.="\t";

        foreach($arr as $k0=>$v0) foreach($v0 as $k1=>$v1){
            if(is_array($v1['#'])){
                $tabsi++;
                $source.="$tabs<$k0".$this->_encode_attributes($v1['@']).">\n".$this->_get_xml($v1['#'], $tabsi)."$tabs</$k0>\n";
                $tabsi--;
            }elseif($v1['#']===null){
                $source.="$tabs<$k0".$this->_encode_attributes($v1['@'])." />\n";
            }else{
                $source.="$tabs<$k0".$this->_encode_attributes($v1['@']).">".$this->_cdata($v1['#'])."</$k0>\n";
            }
        }

        if($tabsi==0) $source=substr($source, 0, strlen($source)-1);
        return $source;
    }

    function _cdata($s){
        if(preg_match("/['\"\[\]<>&]/", $s)) $s='<![CDATA['.$this->_conv_cdata($s).']]>';
        $s=str_replace("\r", '', $s);
        return $s;
    } # //
    function _conv_cdata($s){
        $s=str_replace('<![CDATA[', '<!¢|CDATA|', $s);
        $s=str_replace(']]>', '|¢]>', $s);
        return $s;
    }
    function _unconv_cdata($s){
        $s=str_replace('<!¢|CDATA|', '<![CDATA[', $s);
        $s=str_replace('|¢]>', ']]>', $s);
        return $s;
    } # //
    function _encode_attributes($arr){
        $s='';
        foreach($arr as $k=>$v) $s.=" $k=\"".$this->_encode_attribute($v)."\"";
        return $s;
    } # //
    function _decode_attributes($arr){
        foreach($arr as $k=>$v) $arr[$k]=$this->_decode_attribute($v);
        return $arr;
    } # //
    function _encode_attribute($s){
        $s=preg_replace("/&(?!#[0-9]+;)/s", '&amp;', $s);
        $s=str_replace("<", "&lt;" , $s);
        $s=str_replace(">", "&gt;", $s);
        $s=str_replace('"', "&quot;", $s);
        $s=str_replace("'","'", $s);
        return $s;
    }
    function _decode_attribute($s){
        $s=str_replace("&amp;", "&", $s);
        $s=str_replace("&lt;" , "<", $s);
        $s=str_replace("&gt;" , ">", $s);
        $s=str_replace("&quot;", '"', $s);
        $s=str_replace("'", "'", $s);
        return $s;
    }
}
?>

//Файлик xml.MySqlArr.class.php
<?php
require_once("xml.php");
class EasyXML extends xml {
    var $Array = array();
    var $TempArray = array();
    
    function EasyXML($arr='') {
        $n=0;
        foreach($arr as $array) {
            foreach($array as $key=>$value) {
               if($key == 'id') $this->TempArray[$n]["@"][$key]=$value;
               else $this->TempArray[$n]["#"][$key]=array(array("#"=>$value,"@"=>array()));                   
            }    
            $n++;
        }
        $this->Array["page"][0]["#"]["row"] = $this->TempArray;
        $this->Array["page"][0]["@"] = array();
    }
    
    function WriteXML($headlining, $fileName) {
        $this->arr2xml($this->Array,$headlining, $fileName);    
    }
    function GetXML() {
        return $this->xml;    
    }
    function ParseXML($fileName='',$xml='') {
        if(isset($fileName) and !isset($xml))    return $this->xml2arr('*'.$fileName);
        if(!isset($fileName) and isset($xml))    return $this->xml2arr($xml);
        else return(-1);
    }
}
?>

//Примерчик
<?php
require 'xml.MySqlArr.class.php';
header('Content-Type: text/plain; charset=Windows-1251');
mysql_connect('localhost');
mysql_select_db("girls");
function getMainFoto() {
    $all = array();
    $query = mysql_query("select * from girls order by name");
    while($row = mysql_fetch_assoc($query)) {
        array_push($all,$row);    
    }
    return $all;
}

$xml = new EasyXML(getMainFoto());
$xml->WriteXML(false, 'girls1.xml');

echo $xml->GetXML();
?>


В БД
id | name | folder | about | alt | category
-------------------------------------------------------------
ну тут значения

На выходе получаем:
Код

<?xml version="1.0" encoding="Windows-1251" ?>
<page>
    <row id="2">
        <about>крутая тёлка</about>
        <alt>крутая тёлка</alt>
        <name>Cool</name>
        <folder>girls/ania/</folder>
        <category>1</category>
    </row>
    <row id="1">
        <about>Смирнова</about>
        <alt>Смирнова</alt>
        <name>Smirnova</name>
        <folder>girls/smirnova/</folder>
        <category>3</category>
    </row>
    <row id="3">
        <about>Smirnova</about>
        <alt>Smirnova</alt>
        <name>Smirnova</name>
        <folder>girls/ania/</folder>
        <category>2</category>
    </row>
    <row id="4">
        <about>Smirnovaй</about>
        <alt>Smirnovaй</alt>
        <name>SmirnovaSmirnova</name>
        <folder>girls/ania/</folder>
        <category>6</category>
    </row>
</page>



Смысл такой: существует допустим XML документ в котором есть

<row type='array' valName='row'>
<alt type='string' valName='alt'>сам текст</alt>
<alt type='string' valName='alt1'>сам текст</alt>
<row>

И парсить в переменные определённого типа во FLASH'e.... Ну так вот буду делать, если кого заинтересовало, или кто что хочет сказать по этому поводу - прошу....

Это сообщение отредактировал(а) AntonioBanderaz - 29.8.2005, 00:36


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
AntonioBanderaz
  Дата 29.8.2005, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



Вот так сказать начало и положено....

*****Сурс убрал, а то листать задолбало******

Ну вот теперь мона спать идти....

Это сообщение отредактировал(а) AntonioBanderaz - 29.8.2005, 20:45


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
AlDev
Дата 29.8.2005, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 9
Всего: 50



под Fame твой класс н заработает.
1. Не казазываешь достаточно часто типы переменных.
2. Не указываешь, какой тим возвращает метод

совет - указывай у методов private они, public или static
PM MAIL WWW ICQ YIM MSN   Вверх
AntonioBanderaz
Дата 29.8.2005, 03:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



Да я и толком не знаю какой... Кроме булеона...
Добавлено @ 03:20

*****Сурс убрал, а то листать задолбало******

Так?

Это сообщение отредактировал(а) AntonioBanderaz - 29.8.2005, 20:46


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
AlDev
Дата 29.8.2005, 03:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 9
Всего: 50



Цитата(AntonioBanderaz @ 29.8.2005, 08:18)
var Success = true;   

var Success:Boolean = true; - так.
ещё:
конструктор должен быть public.
если обращаешься к переменной класса (не static), то пиши обращение через this.
как документировать классы
PM MAIL WWW ICQ YIM MSN   Вверх
AntonioBanderaz
Дата 29.8.2005, 03:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



*****Сурс убрал, а то листать задолбало******


Ну вроде поправил... Что ты хочешь первый класс на AS...

А с obj что делать? Как ему что-нидь присвоить, тип какой-нидь... Undefined smile

Это сообщение отредактировал(а) AntonioBanderaz - 29.8.2005, 20:47


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
AlDev
Дата 29.8.2005, 03:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 9
Всего: 50



Цитата(AntonioBanderaz @ 29.8.2005, 08:34)
if (obj == null) {   
            Node.appendChild(this.myXML.createElement("null"));   
        } else if (typeof(val) == "string") {   
            serializeString(val, Node);   
        } else if (typeof(val) == "number") {   
            serializeNumber(val,Node);   
        } else if (typeof(val) == "boolean") {   
            serializeBoolean(val,Node);   
        } else if (typeof(obj) == "object") {   

1. вот тут-вот у тебя всё работает??
2. не проще это через case прописать?
PM MAIL WWW ICQ YIM MSN   Вверх
AntonioBanderaz
Дата 29.8.2005, 03:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



Да попроще и понятней.... Щас...


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
AntonioBanderaz
Дата 29.8.2005, 04:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



Код

/*
Velichko Anton 29.08.2005
com.banderaz.serialize.serialize2XML.as
*/

class com.banderaz.serialize.serialize2XML {


private var myXML:XML;
private var HrefXML:XML;
    
    public function serialize2XML() {
        this.myXML = new XML();
        this.HrefXML = new XML();
        this.HrefXML.appendChild(this.myXML.createElement("SERIALIZE VERSION 1b"));
    }
    public function serialize(obj):XML {
        if (serializeValue(obj, this.HrefXML.lastChild)) {
            return this.HrefXML;
        } else {
            return null;
        }
    }
    private function serializeValue(obj,Node:XMLNode):Boolean {
        var Success:Boolean = true;
        var val = obj.valueOf();
        switch(typeof(val)) {
            case "undefined":
                Node.appendChild(this.myXML.createElement("null"));
            break;
            case "string":
                serializeString(val, Node);
            break;
            case "number":
                serializeNumber(val,Node);
            break;
            case "boolean":
                serializeBoolean(val,Node);    
            break;
            case "object":
                if (typeof(obj.join) == "function" && typeof(obj.reverse) == "function") {
                    Node.appendChild(this.myXML.createElement("array"));
                    Node.lastChild.attributes.length = obj.length;
                    for (var i = 0; Success && i<obj.length; ++i) {
                        Success = serializeValue(obj[i], Node.lastChild);
                    }
                } else {
                    Node.appendChild(this.myXML.createElement("object"));
                    
                    for(var prop in obj) {
                        if (!serializeVariable(prop, Node.lastChild, obj[prop])) {
                            Success = false;
                            break;
                        }
                    }
                }
            break;
            default:
                Success = false;
        }
        return Success;
    }
    private function serializeNumber(Val:Number,Node:XMLNode):Void {
        Node.appendChild(this.myXML.createElement("number"));
        Node.lastChild.attributes.VarType = "number";
        Node.lastChild.attributes.VarValue = Val;
    }
    private function serializeString(Val:String,Node:XMLNode):Void {
        Node.appendChild(this.myXML.createElement("string"));
        Node.lastChild.attributes.VarType = "string";
        Node.lastChild.attributes.VarValue = Val;
    }
    private function serializeBoolean(Val:Boolean,Node:XMLNode):Void {
        Node.appendChild(this.myXML.createElement("boolean"));
        Node.lastChild.attributes.VarType = "boolean";
        Node.lastChild.attributes.VarValue = Val;
    }
    private function serializeVariable(Name,Node:XMLNode,obj):Boolean {
        var Success:Boolean = true;
        if (typeof(obj) != "function") {
            Node.appendChild(this.myXML.createElement("var"));
            Node.lastChild.attributes.name = Name;
            Success = serializeValue(obj, Node.lastChild);
        }
        return Success;
    }
}


вот как-то так... даже работает... smile smile smile smile smile smile smile

Это сообщение отредактировал(а) AntonioBanderaz - 29.8.2005, 06:40


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
AntonioBanderaz
Дата 29.8.2005, 06:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



теперь осталось написать unserialize() и потом браться за PHP...

Н авходе -
mmm = {aaa:"типо строка",bbb:12313};
kkk = Array("asdfghj","asdfgerty",1234567,3567,mmm,false);

выдаёт -

Код

<SERIALIZE VERSION 1b>
<array length="6">
      <string VarValue="asdfghj" VarType="string" />
      <string VarValue="asdfgerty" VarType="string" />
      <number VarValue="1234567" VarType="number" />
      <number VarValue="3567" VarType="number" />
      <object>
          <var name="aaa">
               <string VarValue="типо строка" VarType="string" />
          </var>
          <var name="bbb">
               <number VarValue="12313" VarType="number" />
          </var>
       </object>
       <boolean VarValue="false" VarType="boolean" />
</array>
</SERIALIZE VERSION 1b>



--------------------
ГЫ... 
PM MAIL ICQ   Вверх
Jlekc
Дата 29.8.2005, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 520
Регистрация: 10.2.2005
Где: Leopolis

Репутация: 3
Всего: 4



хмм, изобретать велосипед всегда интересно, или это в познавательных целях?
http://www.sephiroth.it/test/unserializer/index.php
Добавлено @ 10:47
ЗЫ: есе в познавательных целях, то сериализованый объект сделанный средствами ПХП многовато весит, напиши алгоритм: сериализация+сжатия данных.
Тода действительно полезно


--------------------
PM MAIL ICQ   Вверх
AntonioBanderaz
Дата 29.8.2005, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



Нет ну обычные serialize/unserialize - это понятно, я вот решил сделать через XML... Кстати классик не скачивается... Можешь валожить сюды?


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
AntonioBanderaz
Дата 29.8.2005, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



Кстати такая штука уже сделана, она называется WDDX... Счас качаю, только под FLASH не нашёл... Под PHP - 7 метров... =))


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
Jlekc
Дата 29.8.2005, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 520
Регистрация: 10.2.2005
Где: Leopolis

Репутация: 3
Всего: 4



поищу на сайте Mook-a, у него вроде были подобные роботы


--------------------
PM MAIL ICQ   Вверх
AntonioBanderaz
Дата 29.8.2005, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



Я уже скачал да и признаюсь понатырил оттуда чуток....
Закончил unserialize всё потесчено и работает... туда и обратно...
вот код:
Код

/*
Velichko Anton 29.08.2005
com.banderaz.serialize.serialize2XML.as
*/
class com.banderaz.serialize.serialize2XML {
    private var myXML:XML;
    private var HrefXML:XML;
    private var retObject;
    public function serialize2XML() {
        this.myXML = new XML();
        this.HrefXML = new XML();
        this.HrefXML.appendChild(this.myXML.createElement("wddxpacket"));
        this.HrefXML.firstChild.appendChild(this.myXML.createElement("data"));
    }
    public function serialize(obj):XML {
        if (serializeValue(obj, this.HrefXML.firstChild.firstChild)) {
            return this.HrefXML;
        } else {
            return null;
        }
    }
    private function serializeValue(obj, Node:XMLNode):Boolean {
        var Success:Boolean = true;
        var val = obj.valueOf();
        switch (typeof (val)) {
        case "undefined" :
            Node.appendChild(this.myXML.createElement("null"));
            break;
        case "string" :
            serializeString(val, Node);
            break;
        case "number" :
            serializeNumber(val, Node);
            break;
        case "boolean" :
            serializeBoolean(val, Node);
            break;
        case "object" :
            if (typeof (obj.join) == "function" && typeof (obj.reverse) == "function") {
                Node.appendChild(this.myXML.createElement("array"));
                Node.lastChild.attributes.length = obj.length;
                for (var i = 0; Success && i<obj.length; ++i) {
                    Success = serializeValue(obj[i], Node.lastChild);
                }
            } else {
                Node.appendChild(this.myXML.createElement("struct"));
                for (var prop in obj) {
                    if (!serializeVariable(prop, Node.lastChild, obj[prop])) {
                        Success = false;
                        break;
                    }
                }
            }
            break;
        default :
            Success = false;
        }
        return Success;
    }
    private function serializeNumber(Val:Number, Node:XMLNode):Void {
        Node.appendChild(this.myXML.createElement("number"));
        Node.lastChild.appendChild(this.myXML.createTextNode(Val.toString()));
    }
    private function serializeString(Val:String, Node:XMLNode):Void {
        Node.appendChild(this.myXML.createElement("string"));
        Node.lastChild.appendChild(this.myXML.createTextNode(Val));
    }
    private function serializeBoolean(Val:Boolean, Node:XMLNode):Void {
        Node.appendChild(this.myXML.createElement("boolean"));
        Node.lastChild.attributes.value = Val;
    }
    private function serializeVariable(Name, Node:XMLNode, obj):Boolean {
        var Success:Boolean = true;
        if (typeof (obj) != "function") {
            Node.appendChild(this.myXML.createElement("var"));
            Node.lastChild.attributes.name = Name;
            Success = serializeValue(obj, Node.lastChild);
        }
        return Success;
    }
    public function unserialize(XMLSorce:XML) {
        this.retObject = '';
        var Children:XMLNode;
        var TempNode:XMLNode;
        var temp:Number = 0;
        var tmp:Array = new Array();
        TempNode = XMLSorce.firstChild;
        if (TempNode.nodeName.toLowerCase() == "wddxpacket") {
            Children = XMLSorce.childNodes[0];
            var LEN:Number = Array(XMLSorce.childNodes).length;
            while (Children.childNodes[temp].nodeName.toLowerCase() != "data" && temp<LEN) {
                ++temp;
            }
            if (temp<LEN) {
                this.retObject = unserializeNode(Children.childNodes[temp].firstChild);
                return this.retObject;
            } else {
                return null;
            }
        } else {
            return null;
        }
    }
    private function unserializeNode(Node:XMLNode) {
        var nodeType:String = Node.nodeName.toLowerCase();
        switch (nodeType) {
        case "number" :
            return Number(Node.firstChild.nodeValue);
            break;
        case "boolean" :
            //Если значение соводает со строкой "true" возвращает булевское true =)
            return String(Node.attributes.value).toLowerCase() == "true";
            break;
        case "string" :
            return String(Node.firstChild.nodeValue);
            break;
        case "array" :
            var ret:Array = new Array();
            for (var i = 0; i<Node.attributes["length"]; ++i) {
                ret[i] = unserializeNode(Node.childNodes[i].cloneNode(true));
            }
            return ret;
            break;
        case "struct" :
            var ret:Object = new Object();
            for (var i = 0; i<Node.childNodes.length; i++) {
                if (Node.childNodes[i].nodeName.toLowerCase() == "var") {
                    ret[Node.childNodes[i].attributes["name"].toString()] = unserializeNode(Node.childNodes[i].firstChild);
                }
            }
            return ret;
            break;
        default :
            return null;
        }
    }
}


на входе

Код

var kkk:Array = [12,"ewrwe",234,456,5676,78]
var obj:Object = {aaa:true,sss:"dfg",vvv:123,kkkf:kkk};


На выходе

Код

<wddxpacket>
<data>
    <struct>
        <var name="aaa"><boolean value="true" /></var>
        <var name="sss"><string>dfg</string></var>
        <var name="vvv"><number>123</number>
        </var><var name="kkkf">
        <array length="6">
           <number>12</number>
           <string>ewrwe</string>
           <number>234</number>
           <number>456</number>
           <number>5676</number>
           <number>78</number>
        </array>
        </var>
     </struct>
</data>
</wddxpacket>


А если наоборот то получаем то что и запихали... smile smile smile


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Flash"
AlDev
SoWa
  • Если вы хотите предложить кому-либо работу, то пишите или в личку, или оставляйте сообщения в специально предназначеном для этого форуме "Объявления о найме специалистов"
  • Один вопрос - одна тема. Не надо переходов от одного вопроса к другому.
  • Если вы хотите показать какой-нибудь ваш мульт, причём показать, а не предоставить исходник, то вам сюда
  • Вопросы про программирование на ActionScript 1,2 (Flash 8 и более ранние версии) пишите в форуме ActionScript 1,2
  • Вопросы по разработке интернет-приложений на Flex и вопросы по MXML пишите в раздел Flex
  • Смотрим в будущее. ActionScript 3 обсуждается в форуме ActionScript 3
  • Новости из мира Flash.
  • New! [code=ascript][/code] - подсветка ActionScript + wikipedia help

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, AlDev, SoWa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Flash | Следующая тема »


 




[ Время генерации скрипта: 0.0609 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.