Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.06.2007, 19:19
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 1  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
По умолчанию Анализ элементов XML, структура которого неизвестна.

Добрый день. Начал изучать работу с XML и нарвался на проблемку..
Допустим, есть XML-объект
Код:
xm=new XML("<u><t><d><bi h='12'>Some Text</bi></d><bi h='16'>Some Text</bi></t></u>")
и я хочу заменить <bi h='xx'></bi> на <font size='xx'><b><i> </b></i></font>.
Относительно использования insertBefore, insertAfter, attributes, вопросов, вроде-бы, нет, но как перебрать элементы XML не зная его структуры?

Старый 27.06.2007, 19:27
BigDan вне форума Посмотреть профиль Отправить личное сообщение для BigDan Найти все сообщения от BigDan
  № 2  
Ответить с цитированием
BigDan
 
Аватар для BigDan

Регистрация: Apr 2006
Адрес: Kiev
Сообщений: 1,675
Отправить сообщение для BigDan с помощью ICQ
while+XML.hasChildNodes()+XML.childNodes

Старый 27.06.2007, 19:49
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 3  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
+ рекурсия

Старый 28.06.2007, 01:33
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 4  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
Пипл, хелп - не получается. Кучу вариантов перебрал.
Самый жизнесособный:
В цикле спуститься на нижний уровень каждой ветви (.hasChildNodes=false), поштучно скопировать объекты с нижнего уровня + их родителя в другой XML, попутно их проанализировав, вернуться в цикле на предыдущий уровень. Цикл заканчивался-бы после того, как все элементы XML перекочевали в другой.
В чем запарка: есть appendChild, но не нашел ничего наподобие appendParent - не получается копировать элементы, начиная с нижних уровней.
В чем вопрос: как в XML добавить родительский элемент? Если никак, то вокруг чего зацикливать? - у нас нет даже общего количества элементов.

Люди, оч.прошу, помогите пожалуйста найти ошибку - уже 3 часа парюсь...((((

Код:
private function test():Void{
	var s:String;			var aNode:XMLNode;
	var i:Number;			i=0;
	var k:Boolean;			k=false;
	s="<person><name>Dmitry<initials>D.</initials><length>6</length></name><age>24<birthday>1.01.2000</birthday></age></person>";
	s+="<password><val>asdf</val><expire>12.07.2007</expire></password>";
	s+="<mood><average>good</average><now>so-so</now></mood>"; //!!!!!!!!!!!!!!!!!!!! :(
	xm_new=new XML();		xm=new XML(s);
	xm_new=xm;				aNode=xm.childNodes[0];
	while(xm.childNodes.length>0){
		k=false; i=0;
		while (k<>true){ //проверяем все элементы
			if(aNode.childNodes[i].hasChildNodes()){//на наличие следующего уровня
				aNode=aNode.childNodes[i]; // и переходим к нему..
				i=-1;
			}
			i++;
			if (i>aNode.childNodes.length-1){k=true;}
		}
//спустившись на нижний уровень ветки, выдергиваю все элементы и обнуляю их.
		aNode=aNode.parentNode;
		for (var i:Number =0; i<aNode.childNodes.length; i++){
			if (aNode.childNodes[i].nodeName<>null){
				trace(aNode.childNodes[i]+"+"+aNode.childNodes[i].nodeName);
				aNode.childNodes[i].removeNode();
			}
		}
	}
}
Данный код раскладывает почти весь XML на элементы. Проблема в "почти". Восклицательными знаками выделил проблемный участок.


Последний раз редактировалось iNils; 28.06.2007 в 17:36.
Старый 28.06.2007, 22:48
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 5  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Цитата:
и я хочу заменить <bi h='xx'></bi> на <font size='xx'><b><i> </b></i></font>.
А зачем вообще заменять? Не проще bi в css описать?

Старый 29.06.2007, 08:04
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 6  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
Смог разложить XML.

А насчет css:
знаком я с ним поверхностно. "<bi>TEXT</bi>" сделать равным "<b><i>TEXT</b></i>" - не проблема.
1.но как выдернуть из тэга аттрибут?
напр: как "<bi h='20'>TEXT</bi>" сделать равным "<font size='20'><b><i>TEXT</b></i></font>" ??
2.можно-ли средствами css указать на необходимость вставить текст? напр.если я хочу чтобы перед каждым элементом, заключенным в тэги <b></b> появлялось слово "жирным:". т.е. <b>TEXT</b> при выводе на экран выглядел следующим образом: "жирным:TEXT"


Последний раз редактировалось Torero; 29.06.2007 в 08:17.
Старый 29.06.2007, 10:58
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 7  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Torero, не знаю как в нормальном, во флешовом css нельзя конечно.
С аттрибутом: можно подумать, сколько размеров peально будет востребовано и столько наделать тегов ( bi16, bi20 например ).
Хотя разложить xml - хорошее упражнение в любом случае.

Старый 29.06.2007, 15:43
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 8  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
Спасибо за помощь. Топик закрыт.


Последний раз редактировалось Torero; 29.06.2007 в 15:51.
Создать новую тему Ответ Часовой пояс GMT +4, время: 05:53.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 05:53.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.