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

gurman 09.01.2008 23:24

Xml и массивы
 
Ребята, подскажите, как из такого xml
Код:

<m tags="tag1">
        <k src="images/01.jpg"></k>
        <k src="images/02.jpg"></k>
        <k src="images/03.jpg"></k>
</m>
<m tags="tag2">
        <k src="images/04.jpg"></k>
        <k src="images/05.jpg"></k>
</m>

получить такой массив
Код:

images/01.jpg,images/02.jpg,images/03.jpg,images/04.jpg,images/05.jpg
Пробовал вот так, не помогает. Посоветуйте
Код:

tags = new Array();
tagscount = new Array();
pics = new Array();
tagsnum = readXML.childNodes.length;
for (var i:Number=0; i<tagsnum; i++) {
        tags[i]= readXML.childNodes[i].attributes.tags;
        tagscount[i]= readXML.childNodes[i].childNodes.length;
        for (var j:Number=0; j<tagscount[i]; j++) {
                pics[j]=firstChild.childNodes[j].attributes.src;
        }
}


Haiat 09.01.2008 23:39

Допустим что всё это также находится в теге data
Код:

<data>
<m tags="tag1">
        <k src="images/01.jpg"></k>
        <k src="images/02.jpg"></k>
        <k src="images/03.jpg"></k>
</m>
<m tags="tag2">
        <k src="images/04.jpg"></k>
        <k src="images/05.jpg"></k>
</m>
</data>

Код:

tags=array();
for(i=0;readXML.childNodes[i].childNodes;i++){
 for(j=0;readXML.childNodes[i].childNodes[j].attributes.src;j++){
  tags[]=readXML.childNodes[i].childNodes[j].attributes.src;
 }
}

Должно работать.Не пробовал

iNils 09.01.2008 23:41

Не будет.
- tags[] что такое?
- где идет приращении j?
- как может быть i<readXML.childNodes[i] и j<readXML.childNodes[i].childNodes[j] ?

Aziz Zaynutdinoff 09.01.2008 23:45

2 рутовых нода? некорректный xml :)

в AS3.0
Код:

var pics : Array = new Array();
for(var i : Number = 0; i < xml["m"]["k"].length(); i++){
    pics.push(xml["m"]["k"][i].@src);
}

во втором АС это будет что-то вроде:
Код:

var pics : Array = new Array();
for(var i : Number = 0; i < xml.firstChild.childNodes.length; i++)
{
    pics.push(xml.firstChild.childNodes[i].attributes["src"]);
}


iNils 10.01.2008 00:00

Код:

for (var i:Number = 0; i < this.childNodes.length; i++) {
        var nodeA:XMLNode = this.childNodes[i];
        for (var j:Number = 0; j < nodeA.childNodes.length; j++) {
                pics.push (nodeA.childNodes[j].attributes.src);
        }
}
trace (pics);


gurman 10.01.2008 00:15

iNils спасибо, все получилось

Haiat 10.01.2008 06:03

Спасибо Inils за поправки,по невнимательности написал ересь и упусти кое что.А что такого в использовании tags[]=....? Всегда этим пользовался.Такой же эффект как и push.

iNils 10.01.2008 11:02

Ну так индекс же массива не указан :)


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

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