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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.11.2007, 15:47
GladiatoR_Alex вне форума Посмотреть профиль Отправить личное сообщение для GladiatoR_Alex Найти все сообщения от GladiatoR_Alex
  № 1  
Ответить с цитированием
GladiatoR_Alex
 
Аватар для GladiatoR_Alex

Регистрация: Jun 2006
Сообщений: 27
Отправить сообщение для GladiatoR_Alex с помощью ICQ
Cool XML и русский со спецсимволами

Как можно избавиться от спецсимволов \r\n\tСлово\r\n

Исходный XML (если смотреть через Adobe GoLive, а так одни крокозябры):
Код:
<?xml version="1.0" encoding="utf-8"?>
<sTitleName>
	Биология
</sTitleName>
<sMainName>Животное
	<sSubName>
		Крокодил
	</sSubName>
	<sSubName>
		Слон
            </sSubName>
</sMainName>
<xml/>
Код во флэш:
Код:
XMLNode.prototype.traverse = function (tabbing)
{
	if (tabbing == undefined) tabbing="";
	var nName = this.nodeName;
	if (nName == null) nName = "doc";
	for (var i=0; i<this.childNodes.length; i++)
	{
		var child = this.childNodes[i];
		// проверим, является ли этот узел текстовым
		if (child.nodeType == 3)
		{
//			trace ("child.nodeValue="+child.nodeValue.slice(2, -2));
			trace (tabbing+" "+nName+": "+child.nodeValue);
		}
		else
		{
			trace (tabbing+nName);
			// рекурсивный вызов
			child.traverse(tabbing+" ");
		}
	}
}

XMLNode.prototype.removeWhite = function ()
{
	var cNodes = this.childNodes.length;
	for (var i=0; i<cNodes; i++)
	{
		var child = this.child.Nodes[i];
		if (child.nodeType == 3)
		{
			var isEmpty = true;
			for (var j=0; j<child.nodeValue.length; j++)
			{
				if (child.nodeValue.charCodeAt(j)>32)
				{
					isEmpty = false;
					break;
				}
			}
			if (isEmpty)
			{
				child.removeNode();
				cNode--;
				i--;
			}
		}
		else
		{
			child.removeWhite();
		}
	}
}

myXML = new XML ();
myXML.load("content_new.xml");
myXML.ignoreWhite = true; // присваивание ignoreWhite значения true!!
myXML.onLoad = function (success)
{
	if (success)
	{
		this.removeWhite();
		this.traverse();
	}
}
Текущий вывод в трэйсе:
Код:
doc
  sTitleName: 

	Биология


doc
 sMainName Животное
   sSubName: 

		Крокодил

	
 sMainName Животное
   sSubName: 

		Слон

	
doc
Должен быть вывод:
Код:
doc
  sTitleName: Биология
doc
 sMainName Животное
   sSubName: Крокодил
 sMainName Животное
   sSubName: Слон
doc
Ну и потом дружно все внести в массив, тестовые переменные должны быть без \r\n\t! Впервые столкнулся с ХМЛ, и такая проблема, слайс не помогает.... Помогите решить эту задачу...


Последний раз редактировалось GladiatoR_Alex; 14.11.2007 в 15:59.
Старый 14.11.2007, 16:04
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Для оформления своего кода, надо использовать теги [code][/code].
А почему бы вам сразу xml не делать без этих символов? Это ведь экономия трафика.

Один из вариантов:
Убиваем совсем XMLNode.prototype.removeWhite
и пишем так
Код:
myXML = new XML ();
myXML.load ("content_new.xml");
myXML.ignoreWhite = true;
// присваивание ignoreWhite значения true!!
myXML.onLoad = function (success) {
	if (success) {
		//this.removeWhite ();
		this = new XML (this.toString ().split ("\r").join ("").split ("\n").join ("").split ("\t").join (""));
		this.traverse ();
	}
};
__________________
(и)Нильс.ru | Плагины для FlashDevelop


Последний раз редактировалось iNils; 14.11.2007 в 16:08.
Старый 14.11.2007, 16:09
GladiatoR_Alex вне форума Посмотреть профиль Отправить личное сообщение для GladiatoR_Alex Найти все сообщения от GladiatoR_Alex
  № 3  
Ответить с цитированием
GladiatoR_Alex
 
Аватар для GladiatoR_Alex

Регистрация: Jun 2006
Сообщений: 27
Отправить сообщение для GladiatoR_Alex с помощью ICQ
Но как их сделать без этих символов? Этот ХМЛ генерирует Adobe GoLive...
И можно пример по использованию плииз....

Старый 14.11.2007, 16:24
GladiatoR_Alex вне форума Посмотреть профиль Отправить личное сообщение для GladiatoR_Alex Найти все сообщения от GladiatoR_Alex
  № 4  
Ответить с цитированием
GladiatoR_Alex
 
Аватар для GladiatoR_Alex

Регистрация: Jun 2006
Сообщений: 27
Отправить сообщение для GladiatoR_Alex с помощью ICQ
Всё спасибо почти все что необходимо заработало, всё остальное я сделаю

Создать новую тему Ответ Часовой пояс GMT +4, время: 04:00.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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