Тема: Обход xml
Показать сообщение отдельно
Старый 03.10.2011, 01:39
savva вне форума Посмотреть профиль Отправить личное сообщение для savva Найти все сообщения от savva
  № 1  
Ответить с цитированием
savva

Регистрация: Jul 2011
Сообщений: 79
По умолчанию Обход xml

Здравствуйте,наверняка неоднократно поднимался подобный вопрос,но поиск не выявил необходимый мне ответ.

не получается сделать рекурсвиный обход такого XML файла

Код AS3:
<?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>
Помогите пожалуйста.

примерно так предполагаю сделать :

Код AS3:
	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
Проблема в следующем мне нужно,чтобы программа возвращалась на уровень наверх,как только она доходит до конца.Точнее даже на n -ое количество уровней. То бишь функция сначала обходила 1 ветку,потом вторую и так далее. Сейчас парсер каждый раз собирает curs со всех веток одно уровня и получается что некоторые элементы печатаются по несколько раз.


Последний раз редактировалось savva; 03.10.2011 в 02:21. Причина: Новый вопрос:)