PDA

Просмотр полной версии : количество объектов в XML


Дмитрий.
09.07.2007, 10:40
Если использовать такой код

oxml = new XML();
oxml.ignoreWhite = true;
oxml.load("objects.xml");
oxml.onLoad = trace(oxml.childNodes[0].childNodes.length);

То все работает и показывает количество узлов. А если вызывать загрузку XML из функции, то не работает.


function XML2 () {
oxml = new XML();
oxml.ignoreWhite = true;
oxml.load("objects.xml");
oxml.onLoad = trace(oxml.childNodes[0].childNodes.length);
}

В чем ошибка?

etc
09.07.2007, 10:44
Первый код не может работать. И второй тоже.

oxml.onLoad = function() {
trace(this.firstChild.childNodes.length);
}

Torero
09.07.2007, 11:08
Если структура XML сложная, то в цикле, 1 за другим, обнули все объекты и посчитай сколько их было.

Дмитрий.
09.07.2007, 12:03
Первый код прекрасно работает.

this.create
09.07.2007, 12:04
Дмитрий
Свой XML покажите. Разумеется в упрощенном виде.

Дмитрий.
09.07.2007, 12:12
<NORTH_AMERICA>
<State>
<object></object>
<object></object>
</State>
</NORTH_AMERICA>
<South_AMERICA>
<State>
<object></object>
<object></object>
</State>
</South_AMERICA>

this.create
09.07.2007, 12:52
Я вставил ваш XML в XML редактор, а он пишет что XML не правильный.
А вот так все нормально.
<?xml version="1.0" encoding="UTF-8"?>
<main>
<NORTH_AMERICA>
<State>
<object></object>
<object></object>
</State>
</NORTH_AMERICA>
<South_AMERICA>
<State>
<object></object>
<object></object>
</State>
</South_AMERICA>
</main>

Совет: для работы с XML используйте специальные XML редакторы.

Далее:
oxml = new XML();
oxml.ignoreWhite = true;
oxml.load("objects.xml");
oxml.onLoad = trace(oxml.firstChild.childNodes[0].childNodes.length);
не работает ( как вам и указали).

function xmlLoader(fileName:String):Void {
oxml = new XML();
oxml.ignoreWhite = true;
oxml.load(fileName+'.xml');
oxml.onLoad = function(success:Boolean):Void {
if (success && !this.status) {
trace(this.firstChild.childNodes[0].childNodes.length);
}
};
}
//
xmlLoader('objects');
Вот вариант с функцией. Все прекрасно работает.

etc
09.07.2007, 13:48
Первый код прекрасно работает.
Вот именно в таком виде он не может работать.