Показать сообщение отдельно
Старый 16.11.2009, 14:51
SamFR вне форума Посмотреть профиль Отправить личное сообщение для SamFR Посетить домашнюю страницу SamFR Найти все сообщения от SamFR
  № 12  
Ответить с цитированием
SamFR

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Цитата:
Сообщение от _SoWa Посмотреть сообщение
В шаблонизаторе поправил, и все хорошо работает
Ну вот и отлично)

В крайнем случае можно было сделать так (пусть теги, в которых могут храниться html-данные, перечислены в массиве htmlTags):
Код AS3:
//загруженные XML-данные
var xmlString:String = '<points>\n' + 
			'	<add_point xy="133,190,lep" text="text"><P>someText<BR>moreText</P></add_point>\n' + 
			'	<add_point/>\n' + 
			'	<another_tag>another text</another_tag>\n' + 
			'	<uru_ru text="ururu"><B>text</B><BR>text</uru_ru>\n' + 
			'</points>';
trace('"Плохой" XML:\n' + xmlString + '\n');
 
//список тегов, хранящих html-данные
var textTags:Array = ['add_point', 'uru_ru'];
 
xmlString = wrapHtml(xmlString, textTags);
trace('Исправленный XML:\n' + xmlString + '\n');
 
var xml:XML = XML(xmlString);
trace('Распарсенный XML:\n' + xml);
 
/**
 * Помещает содержимое известных XML-тегов в тег CDATA.
 * 
 * @param xmlString:String Нуждающиеся в корректировке XML-данные.
 * @param tags:Array XML-теги, хранящие html-данные.
 * 
 * @return Исправленные XML-данные.
 */
function wrapHtml(xmlString:String, tags:Array):String{
	var cdater:RegExp = new RegExp('<(' + tags.join('|') + ')([^>\\/]*?)>(.*?)<\\/\\1>', 'gs');
	return xmlString.replace(cdater, '<$1$2><![CDATA[$3]]></$1>');
}


Последний раз редактировалось SamFR; 16.11.2009 в 19:43.