Показать сообщение отдельно
Старый 23.11.2004, 16:03
Onic вне форума Посмотреть профиль Отправить личное сообщение для Onic Посетить домашнюю страницу Onic Найти все сообщения от Onic
  № 2  
Onic

Регистрация: Jun 2002
Адрес: Zenkov
Сообщений: 8
Вот переписываю из учебника функцию рекурсии obhod(), подсчитывающую количество узлов в документе.
Она получает ссылку на узел и увеличивает значение переменной-счетчика на единицу. Затем она проверяет, есть ли у узла дочерние узлы. Если они есть, то создается еще одна активация функции и ей передается ссылка на первый дочерний узел. Далее функция проверяет, имеется ли узел, который был бы прописан после данного. Если он обнаруживается, то ссылка на него передается новой активации obhod().

Код:
var myXML:XML=new XML("<text><t1/><data>привет</data><t3/></text>");
var col:Number=0;
function obhod(node:XMLNode):Void {
	col++;
	if (node.hasChildNodes()) {
		obhod(node.firstChild);
	}
	if (node.nextSibling != null) {
		obhod(node.nextSibling);
	}
}
obhod(myXML.firstChild);
trace(col); //Выводит 5
Теперь немного изменим код:
Код:
var myXML = new XML();
myXML.load("myxml.xml");
var col:Number=0;
myXML.onLoad = function() {
function obhod(node:XMLNode):Void {
	col++;
	if (node.hasChildNodes()) {
		obhod(node.firstChild);
	}
	if (node.nextSibling != null) {
		obhod(node.nextSibling);
	}
}
obhod(myXML.firstChild);
trace(col); //Выводит 0 ЧТО НЕ ПРАВИЛЬНО
}
Содержимое файла myxml.xml такое:
Код:
	<LES>
		<dub>
			<vetochka1>
				<listik1/>
				<listik2/>
				<listik3/>
			</vetochka1>
			<vetochka2/>
			<duplo vduple="meda polno"/>
		</dub>
		<sosna>
			<krona>
				<igolka1/>
				<igolka2/>
				<igolka100/>
			</krona>
		</sosna>
		<lipa>
			<vetochka1 pochka="4"/>
			<vetochka2 pochka="10"/>
			<vetochka3 pochka="0"/>
		</lipa>
		<kamen oblom="у него есть остаток какого-то хрена"/>
	</LES>
Помогите найти Ошибку!!!


Последний раз редактировалось Onic; 23.11.2004 в 16:05.