Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   ComboBox && XML (http://www.flasher.ru/forum/showthread.php?t=125936)

DEN123 05.06.2009 15:20

ComboBox && XML
 
Делал делал и не чего не получилось.
ХМЛ
Код:

<?xml version="1.0" ?>
<CATALOG>
        <OBJECT id="0001" com="1" price="10000" data="01.02.2009" video="videoxml.mp3">
                <LOCATION street="Rekordnaya" district="Malina" />
                <FLOOR>
                        <FLOORS state="5" />
                        <ALL state="10" />
                </FLOOR>
                <PLANNING>
                        <COM1 size="30" foto="imgID0001COM1" />
                        <KITCHEN size="20" foto="" />
                        <INFO>tualet - 10</INFO>
                        <INFO>vannaya - 10</INFO>
                </PLANNING>
                <REPAIR state="evro">
                        <INFO>lya lya topolya</INFO>
                        <INFO>lya lya topolya2</INFO>
                </REPAIR>
                <DESCRIPTION>
                        <GAZ state="gorod" />
                        <INTERNET state="TENET" />
                        <INFO>mebel</INFO>
                        <INFO>pol</INFO>
                        <INF1O>stenu</INF1O>
                </DESCRIPTION>
                <DESCRIPTION_2>
                        <LIFT state="good"/>
                        <DOMOFON state="yes" />
                        <VID state="detskiy sad" />
                        <INFO>marazin</INFO>
                </DESCRIPTION_2>
                <MINUS>
                        <INFO>NO metro</INFO>
                </MINUS>
                <WHOSE name="Denis">
                        <TEL name="DENIS" tel="80672947321" />
                </WHOSE>
        </OBJECT>

Код:
Код AS3:

function CreateComboBox(myXML:XML):void 
{
        var dpcb:DataProvider = new DataProvider();
        var cb:ComboBox = new ComboBox();
        cb.dataProvider = dpcb;
        cb.move(100,100);
        cb.addEventListener(Event.CHANGE, Selected); 
        addChild(cb);
 
        var object2:XMLList = myXML.OBJECT[0].children();
 
 
        for each (var item:XML in object2)
        {
                trace(item.name());
                dpcb.addItem( { label: item.name() } );
                //trace("att "+item.attributes().length());
                for(var j1:int;j1<item.attributes().length();j1++)
                {
                        //trace(item.attributes()[j].name());
                        dpcb.addItem( { label: item.attributes()[j1].name() } );
                }
                trace("child "+item.children().length());
                for(var j2:int;j2<item.children().length();j2++)
                {
                        trace(" hasSi "+item.children()[j2].children().hasSimpleContent());
                        if(item.children()[j2].children().length() > 0)
                                dpcb.addItem( { label: item.children()[j2] } );
                                                else(item.children()[j2].children().hasSimpleContent() == true )
                                dpcb.addItem( { label: item.children()[j2].attributes().name() } );
                }
        }
}

Должно вывести
Всех детей(если само закрывающейся то атрибуты(имена)) и всех детей детей, если есть само закрывающейся дети то и их тоже теги.
у меня вылазит всякий бред в начале вроде нормально а потом тар тарары

wvxvw 05.06.2009 15:58

Лучше напишите, как должен выглядеть результат после фильтрации... в коде больше 50% лишнего, и не понятно, что он должен делать.
hasSimpleContent - метод XML, а не XMLList... Да... и else это не функция...

DEN123 05.06.2009 16:13

LOCATION
street
district
FLOOR
state
state
PLANNIN
COM1 <KITCHEN ="20" ="" />
size
foto
KITCHEN
size
foto
INFO
REPAIR
state
INFO
state
state
INTERNET
INFO

и так далее. ещё хотелось бы что бы ДЕТИ(первые)
были не активны. ну нельзя было на них нажать и они были другого цвета

wvxvw 05.06.2009 16:58

Код AS3:

import fl.data.DataProvider;
import fl.controls.ComboBox;
 
var xml:XML =
<CATALOG>
        <OBJECT id="0001" com="1" price="10000" data="01.02.2009" video="videoxml.mp3">
                <LOCATION street="Rekordnaya" district="Malina" />
                <FLOOR>
                        <FLOORS state="5" />
                        <ALL state="10" />
                </FLOOR>
                <PLANNING>
                        <COM1 size="30" foto="imgID0001COM1" />
                        <KITCHEN size="20" foto="" />
                        <INFO>tualet - 10</INFO>
                        <INFO>vannaya - 10</INFO>
                </PLANNING>
                <REPAIR state="evro">
                        <INFO>lya lya topolya</INFO>
                        <INFO>lya lya topolya2</INFO>
                </REPAIR>
                <DESCRIPTION>
                        <GAZ state="gorod" />
                        <INTERNET state="TENET" />
                        <INFO>mebel</INFO>
                        <INFO>pol</INFO>
                        <INF1O>stenu</INF1O>
                </DESCRIPTION>
                <DESCRIPTION_2>
                        <LIFT state="good"/>
                        <DOMOFON state="yes" />
                        <VID state="detskiy sad" />
                        <INFO>marazin</INFO>
                </DESCRIPTION_2>
                <MINUS>
                        <INFO>NO metro</INFO>
                </MINUS>
                <WHOSE name="Denis">
                        <TEL name="DENIS" tel="80672947321" />
                </WHOSE>
        </OBJECT>
</CATALOG>;
 
function createComboBox(myXML:XML):void
{
        var dpcb:DataProvider = new DataProvider();
        var cb:ComboBox = new ComboBox();
        cb.dataProvider = dpcb;
        cb.move(100, 100);
        //cb.addEventListener(Event.CHANGE, combo_changeHandler); 
        addChild(cb);
 
        var items:XMLList = new XMLList();
        myXML.OBJECT[0].*.((items += XML(name())) &&
                                        (attributes().length() ? !(attributes().(items += XML(name()))) : true) &&
                                        (children().length() ?
                                        children().(attributes().length() ?
                                        ((items += XML(name())) && attributes().(items += XML(name()))) :
                                        (items += XML(name()))) : true));
        trace(items.toXMLString());
}
 
createComboBox(xml);
/*
LOCATION
street
district
FLOOR
FLOORS
state
ALL
state
PLANNING
COM1
size
foto
KITCHEN
size
foto
INFO
INFO
REPAIR
state
DESCRIPTION
GAZ
state
INTERNET
state
INFO
INFO
INF1O
DESCRIPTION_2
LIFT
state
DOMOFON
state
VID
state
INFO
MINUS
INFO
WHOSE
name
*/

Но я не вижу никакой логоки / связи в том:
почему FLOORS не должен выводится, а COM1 должен. Я посчитал, что это ваша ошибка копи-паста...

DEN123 05.06.2009 19:00

хорошо. только мне хотелось бы что бы там где самозакрывающейся, то только атрибуты.
и подскажите как мне организовать, вот я хочу что бы это было русскими буквами но теги в ХМЛ русскими делать не хочу, как мне быть?

wvxvw 06.06.2009 02:17

Просто напишите исходя из данного XML какой должен получится в итоге список... то что вы написали до этого ведет себя не последовательно:
т.е. либо после FLOOR не хватает FLOORS, либо после PLANNING не должно быть KITCHEN.
А буквы пишите какие хотите. Главное чтобы XML был в кодировке UTF-8.

DEN123 06.06.2009 02:22

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

да там в последовательности что то напутал. просто там где само закрывающеся не надо показывать НАМЕ а только теги

wvxvw 06.06.2009 02:30

Ну, не знаю, попробую еще раз:
Пишите том языке, на каком хотите (какой хотите включает так же и русский язык. т.е. если вы хотите писать по-русски, то вы можете это сделать) - главное, сохраните XML файл в кодировке UTF-8.

тег == <foo/>
что такое HAME - я не знаю... Попробуйте сфрормулировать задачу так, чтобы кто-то кроме вас смог понять, чего вы хотите. Пока что вас непонятно :(

DEN123 06.06.2009 02:35

Из фрагмента:
<PLANNING>
<COM1 size="30" foto="imgID0001COM1" />

должно получится
PLANNING
size
foto

ах, да как в комбоБохе делать значение, которое не видно, но будет связано с тем которые показывается пользователю к примеру:
пользователь видет:
size
state
а когда выберается, то передается 01 или 02 ..


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

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