![]() |
|
||||||||||
|
|||||
|
[+ 06.08.11]
Регистрация: Jul 2011
Сообщений: 79
|
Здравствуйте,наверняка неоднократно поднимался подобный вопрос,но поиск не выявил необходимый мне ответ.
не получается сделать рекурсвиный обход такого XML файла <?xml version="1.0" encoding="UTF-8"?> <images head="начальное изображение" > <curs x="1" y="1"> <image src="2"/> <curs x="11" y="33"> <image src="22"/> <curs x="11" y="13"> <image src="22"/> </curs> </curs> <curs x="1" y="1"> <image src="2"/> <curs x="31" y="22"> <image src="21"/> </curs> </curs> <curs x="123" y="324"> <image src="123"/> <curs x="3121" y="4121"> <image src="1241"/> </curs> </curs> </curs> </images> примерно так предполагаю сделать : private function sss(_obj:XMLList,parent:Vertex):void { for (var i:Number = 0; i < _obj.length(); i++) { var object:Object = _obj[i]; trace(object.@x, object.@y); //trace(object.image.@src); parent.getImg().addPointer(new Pointer(new Point(object.@x, object.@y))); var y:Image = new Image(object.image.@src); var x:Vertex = new Vertex(y); parent.addVertexbyVertex(x); var list:XMLList = _obj.child("curs"); trace(list); sss(list, x); } } вот trace её работы
1 1
<curs x="11" y="33">
<image src="22"/>
<curs x="11" y="13">
<image src="22"/>
</curs>
</curs>
<curs x="1" y="1">
<image src="2"/>
<curs x="31" y="22">
<image src="21"/>
</curs>
</curs>
<curs x="123" y="324">
<image src="123"/>
<curs x="3121" y="4121">
<image src="1241"/>
</curs>
</curs>
11 33
<curs x="11" y="13">
<image src="22"/>
</curs>
<curs x="31" y="22">
<image src="21"/>
</curs>
<curs x="3121" y="4121">
<image src="1241"/>
</curs>
11 13
31 22
3121 4121
1 1
<curs x="11" y="13">
<image src="22"/>
</curs>
<curs x="31" y="22">
<image src="21"/>
</curs>
<curs x="3121" y="4121">
<image src="1241"/>
</curs>
11 13
31 22
3121 4121
123 324
<curs x="11" y="13">
<image src="22"/>
</curs>
<curs x="31" y="22">
<image src="21"/>
</curs>
<curs x="3121" y="4121">
<image src="1241"/>
</curs>
11 13
31 22
3121 4121
Последний раз редактировалось savva; 03.10.2011 в 02:21. Причина: Новый вопрос:) |
|
|||||
|
Modus ponens
|
Долго думал... и понял, что я не понимаю вопрос.
Если под "на уровень наверх" подразумевается, что нужно еще раз передать в функцию родительский узел и всех его "братьев", то как вы тогда планируете завершить выполнение функции? Если на уровень наверх - значит к самому первому узлу, то есть 2 варианта: передавать его отдельным параметром, а если передали null, то значит что его нужно назначить (в таком случае лучше передавать в функцию не список детей, а родителя). Другой вариант. Просто обработать корневой узел отдельно (еще вопрсо для чего это нужно?). Из отдельных замечаний: лучший вариант из циклов для решения вашей задачи - for-each. Обычный for имеет смысл использовать, если вы планируете использовать счетчик. Тип Number плохо подходит для счетчика циклов т.как это число с плавающей запятой. Есть смысл его использовать если вы предполагаете, что значение счетчика может быть больше максимального int или uint. и идентичны. Если вы уже в одном месте использовали композицию функций, то имеет смысл быть последовательным, и делать это всегда, иначе у читателя возникает недоумение (он будет ждать, что вы используете переменную где-то еще раз, и будет искать это место, а его... нет). Я имею в виду вот это: var y:Image = new Image(object.image.@src); var x:Vertex = new Vertex(y); parent.addVertexbyVertex(x); Идентичен коду выше.
__________________
Hell is the possibility of sanity |
|
|||||
|
[+ 06.08.11]
Регистрация: Jul 2011
Сообщений: 79
|
Да,извините за сумбур,каждую минуту редактирую вопрос.
var y:Image = new Image(object.image.@src); var x:Vertex = new Vertex(y); parent.addVertexbyVertex(x); ![]() Ещё раз попробую описать вопрос. Я из xml файла делаю дерево (для пошаговой бродилки по зданию). Хочу обходить дерево следующим образом. Взял первый curs и прошёл его до упора (не знаю как посмотреть если дети у узла ),потом перешёл на следующий curs. То есть каждой итерацией я создаю целу ветку дерева. Добавлено через 5 минут Всё,я нашёл свою ошибку в функции: заменить на |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|