PDA

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


Чттос
25.02.2008, 17:30
Ребята, спасайте, пожалуйста..! Вообще не могу понять в чем и где ошибка, что в нижеуказанном коде, в функции loadCombo() не работает условие for.
gallery_cb - это находящийся уже на сцене комбобокс компонент.

var rootNode:XMLNode;
var roxskaXML:XML = new XML();
roxskaXML.ignoreWhite = true;
roxskaXML.onLoad = loadPhotos;
roxskaXML.load("mediaPhotos.xml");
function loadPhotos(success:Boolean):Void {
if (success) {
rootNode = this.firstChild;
loadCombo();
} else {
trace("Error loading XML - T4S");
}
}
function loadCombo():Void {
var galleryName:String;
gallery_cb.addItem("--Select--");
for (var i:Number = 0; i<rootNode.childNodes.lenght; i++) {
galleryName = rootNode.childNodes[i].attributes.locationName;
gallery_cb.addItem(galleryName);
trace(rootNode);
}
}

наверняка, тут где-нибудь допущена какая-нибудь глупая ошибка которую я НЕ МОГУ НАЙТИ. :mad:
trace(rootNode) или trace(this) либо другие trace() в этом месте ничего не выводят.

Olegg
25.02.2008, 18:01
попробуйте так

var comboBox:mx.controls.ComboBox;
var rootNode:XMLNode;
var roxskaXML:XML = new XML();
roxskaXML.ignoreWhite = true;
roxskaXML.onLoad = loadPhotos;
roxskaXML.load("mediaPhotos.xml");
function loadPhotos(success:Boolean):Void {
if (success) {
rootNode = this.firstChild;
loadCombo();
} else {
trace("Error loading XML - T4S");
}
}
function loadCombo():Void {
var galleryName:String;
gallery_cb.addItem("--Select--");
for (var i:Number = 0; i<rootNode.childNodes.lenght; i++) {
galleryName = rootNode.childNodes[i].attributes.locationName;
trace(rootNode);
}
gallery_cb.dataProvider = galleryName;
}

ПС.Ошибка в том,что вы не инициализировали ComboBox(см.строчку 1)
и элементы добавляются не так.как вы добавляете.

Чттос
25.02.2008, 18:58
с этим кодом вообще ничего не работает)) а разве надо инициализировать ComboBox, если он уже лежит в кадре? может быть, может быть, спорить не буду, правда и без этой строчки сам компонент работал:
gallery_cb.addItem("--Select--");
строку --Select-- выдавал.

посмотрите пожалуйста, правильно ли написано условие FOR?

Olegg
25.02.2008, 19:01
Выложите исходник.

Fernando Costa
25.02.2008, 19:07
здается мне что проблема в самом ХМЛ файле

Olegg
25.02.2008, 19:17
Кстати,может быть.Выложите структуру XML.

Чттос
25.02.2008, 19:42
18926
исходник приложила, там есть и хмл. дело в том, что хмл работает если запросить его атрибуты этих же узлов в другом месте кода.
но вот на всякий случай код хмл выкладываю тут:

<?xml version="1.0" encoding="utf-8"?>
<roxska>
<album locationName="one foulder in my pc">
<photo name="photo du groupe" src="roxska.swf">its roxska swf</photo>
<photo name="video" src="roxska1.swf">its roxska one swf</photo>
<photo name="photo life" src="flash.swf">its flash swf</photo>
<photo name="bla" src="r de roxska.png">its r of roxska png</photo>
<photo name="ghthty" src="l_be1e1af5004c5d441875ea17d5d72c37.gif">its gif of bonhommes</photo>
</album>
<album locationName="second foulder on my pc">
<photo name="bla1" src="rs1.jpg">bg one</photo>
<photo name="bla2" src="rs1.jpg">bg two</photo>
<photo name="but" src="bouttonmedia.swf">button bazarre</photo>
</album>
</roxska>

iNils
25.02.2008, 19:46
У вас в цикле lenght, а надо length.

Fernando Costa
25.02.2008, 19:51
iNils - глаз алмаз.
Эх не прикрутили на форум теги :(

Чттос
25.02.2008, 20:01
Ух! только что методом тыка поняла что проблема именно в этом
rootNode.childNodes.lenght.. а свою ошибку так и не заметила. про lenght-length

спасибо всем огромное, впредь надо быть внимательнее с подсветкой тегов. (сказала сама себе)