Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   XML, не могу получить attribute (http://www.flasher.ru/forum/showthread.php?t=149237)

forhaxed 21.01.2011 10:57

XML, не могу получить attribute
 
Доброго времени суток.

У нас есть XML'ка, конкретно:

Код:

<message from="news1.jab.forhaxed.ru" to="v_124060533@jab.forhaxed.ru/Home">

    <event boys="458" waiting="301" girls="389" age="10" xmlns="somegame:event:waitingroom">

        <User name="DurkO=)" male="1" id="v_15637703"/>
        <User name="Musa" male="1" id="v_109380202"/>

        <User name="(:" male="0" id="v_20398419"/>

        <User name="Вован" male="1" id="v_57846798"/>

        <User name="Евгения" male="0" id="v_118294953"/>
    </event>

    <amp xmlns="http://jabber.org/protocol/amp">

        <rule condition="deliver" value="stored" action="error"/>

    </amp>

</message>

Мне нужно получить из event атрибут boys, girls, etc.
Пробую сделать так (эмпирическим путем):

Код AS3:

var try1:String = String(xml.event.@boys);
var try2:String = String(xml.event.attributes);
var try3:String = String(xml.event.attribute("boys"));
var try4:String = String(xml.event.@*);
var try5:String = String(xml.amp.@xmlns);
var try6:String = String(xml.amp.attributes);
var try7:String = String(xml.amp.attribute("xmlns"));
var try8:String = String(xml.amp.@*);
 
var try9:String = String(xml.@from);
var try10:String = String(xml.attributes);
var try11:String = String(xml.attribute("from"));
var try12:String = String(xml.@* );

В ответ получаю:

Код:

try1 = ""
try2 = ""
try3 = ""
try4 = ""
try5 = ""
try6 = ""
try7 = ""
try8 = ""
try9 = "news1.jab.forhaxed.ru"
try10 = ""
try11 = "news1.jab.forhaxed.ru"
try12 = undefinded

Как получить attribute у дочерних элементов?

Gaen 21.01.2011 11:52

Код AS3:

trace(typeof(xml.event));     //XMLList
trace(typeof(xml.event[0]));  //XML
trace(xml.event[0].@boys);    //458


-De- 21.01.2011 11:54

Атрибут xmlns фигню творит, я бы советовал его прибить, тогда самый первый вариант заработает)
Если не прибивать:
Код AS3:

var waitingroom:Namespace = new Namespace( "somegame:event:waitingroom" );
trace(xml.waitingroom::event.@boys);

(с) http://stackoverflow.com/questions/2...3s-xml-parsing

wvxvw 21.01.2011 12:23

xmlns - не аттрибут в полном смысле, а объявление пространства имен. Нужен для того, чтобы если XML формируется разными программами, например, не получилось так, что одна программа перезапишет информацию записанную другой программой. Получить все пространства имен доступные данному узлу: xml.inScopeDeclarations(), получить все пространства имен объявленные в этом узле: xml.namespaceDeclarations(), получить пространство имен в котором находится данный узел: xml.namespace().

etc 22.01.2011 14:49

Код AS3:

var xml:XML = <message from="news1.jab.forhaxed.ru" to="v_124060533@jab.forhaxed.ru/Home">
 
    <event boys="458" waiting="301" girls="389" age="10" xmlns="somegame:event:waitingroom">
 
        <User name="DurkO=)" male="1" id="v_15637703"/>
        <User name="Musa" male="1" id="v_109380202"/>
 
        <User name="(:" male="0" id="v_20398419"/>
 
        <User name="Вован" male="1" id="v_57846798"/>
 
        <User name="Евгения" male="0" id="v_118294953"/>
    </event>
 
    <amp xmlns="http://jabber.org/protocol/amp">
 
        <rule condition="deliver" value="stored" action="error"/>
 
    </amp>
 
</message>;
 
var event:XML = xml..*.(localName() == 'event')[0];
 
trace(event.@boys);



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

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