PDA

Просмотр полной версии : Xml и массивы


gurman
09.01.2008, 23:24
Ребята, подскажите, как из такого 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
Ну так индекс же массива не указан :)