Вход

Просмотр полной версии : Подгрузка данных в массив из XML


mtema
24.06.2010, 17:09
Просьба не кидать тапками :( Есть XML:
<data>
<image0.jpg>
<sample nam="Вася Иванов"/>
<sample nam="Петя"/>
<sample nam="КУзя"/>
<sample nam="Лена"/>
<sample nam="Даша"/>
<sample nam="Саша"/>
</image0.jpg>

<image1.jpg>
<sample nam="Маша"/>
<sample nam="Глаша"/>
</image1.jpg>
</data>

Есть код AS 2.0

my_xml.load("links.xml");
f_www = function () {
mass = [[],[]];
var nodes = my_xml.firstChild.childNodes;
for (var n=0; n<nodes.length; n++) {
s = my_xml.firstChild.childNodes[n].nodeName;
mass[0].push(s);
}

for (var n=0; n<my_xml.firstChild.firstChild.childNodes.length; n++) {
h = my_xml.firstChild.firstChild.childNodes[n].attributes.nam;
mass[1].push(h);
}

а как занести в массив mass[1] содержимое нодов image0.jpg и image1.jpg целиком?
Т.е. все имена людей из XML?

sniper007
24.06.2010, 20:47
можно с использованием рекурсии такое сделать. полный обход дерева


var i:Number = 0; // счетчик
function obhod(node:XMLNode):Void
{
if (node.hasChildNodes() != null) obhod(node.firstChild);// проверяем есть ли потомок. если да - запускаем рекурсию.
else // иначе - это то, что нам нужно. вытаскиваем атрибут.
{
mass[i] = node.attributes["nam"];
i++;
}

if (node.nextSibling != null) obhod(node.nextSibling); // переходим к соседнему элементу (брату)
}

obhod(my_xml.firstChild.firstChild); // Запускаем обход

mtema
25.06.2010, 11:51
Спасибо буду разбираться!