Форум 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=99510)

bettrrr 07.08.2007 19:40

Перевод объекта XML в ассоциативный массив
 
получился такой класс:
Код:

class XMLParser {

        public var XMLArr:Array = new Array();


        function XMLParser(XMLData) {
                trace("XMLParser created");
                this.Parse(XMLData.firstChild,this);
        }
        function Parse(node, nodeParent) {
                while (node != null) {
                        if (node.nodeType !== 3) {
                                nodeParent[node.nodeName] = new Object();
                                if (node.hasChildNodes()) {
                                        this.Parse(node.firstChild,nodeParent[node.nodeName]);
                                }
                        } else {
                                nodeParent.value = node.nodeValue;
                        }
                        for (var attrib in node.attributes) {
                                if (nodeParent[node.nodeName]["attributes"]==undefined) {
                                        nodeParent[node.nodeName]["attributes"] = new Object();
                                }
                                if (nodeParent[node.nodeName].attributes[attrib]==undefined) {
                                        nodeParent[node.nodeName].attributes[attrib] = new Object();
                                }
                                nodeParent[node.nodeName].attributes[attrib] = node.attributes[attrib];
                                trace(node.nodeName+"== "+attrib+' = '+node.attributes[attrib]);
                        }
                        node = node.nextSibling;
                }
                return true;
        }
}

Долго я с ним парился из-за проблем с дебаггером.
Тут всё делается в лоб, может быть можно сделать более красиво?

etc 07.08.2007 19:46

А почему имя метода Parse и имя свойства XMLArr похожи на имя класса?

И, если уж пишете на AS2, то типизацию надо указывать. Везде.

zafod 08.08.2007 07:58

if (node.nodeType !== 3) - что это за операция? "!=="

screamge 08.08.2007 08:00

Цитата:

Сообщение от zafod
if (node.nodeType !== 3) - что это за операция? "!=="

Наберите в хелпе и узнаете, строгое равенство, соответствие и типов.

etc 08.08.2007 10:23

Цитата:

Сообщение от zafod
if (node.nodeType !== 3) - что это за операция? "!=="

Строгое неравенство.

screamge 08.08.2007 10:42

Цитата:

Сообщение от __etc
Строгое неравенство.

Угу, сорри :)


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

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