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

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

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

Регистрация: Dec 2005
Сообщений: 94
Question xPath

Подскажите плиз, кто работал с xPath для флэша, как полечить/обойти передачу CDATA < и >

все теги внутри цдаты передаются ескейп последовательностями а не обычными значками

т.е

Код:
<![CDATA[ <b>1 menu short ru</b> ]]>  передаеться как <![CDATA[&lt;b&gt;1 menu short ru&lt;/b&gt;]]>

Старый 17.12.2007, 18:49
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Работал с этим замечательным примером попытки пришить флешу класс тупо скопированый из другого языка. При первой же возможности выбросил -- чего и другим советую. Весь функционал этого многостраничного произведения умещается при желании в 1, максимум 2 файла по 200 строк максимум (оригинал раз эдак в 10 больше, если память не изменяет).
С CDat"ой мозгут быть 2 варианта - вы указываете на родительский нод, а не на нод с датой (тогда текст будет ХТМЛ-енкодед) или пользуйтесь escape/unescape.
__________________
Hell is the possibility of sanity

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

Регистрация: Dec 2005
Сообщений: 94
не помогло.
Все равно где встречается цдата заменяется
Вложения
Тип файла: rar xPath.rar (34.9 Кб, 74 просмотров)

Старый 17.12.2007, 19:08
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Если есть желание подождать - прийду домой - сделаю =)
Код:
var _xml:XML = new XML("<![CData[<a href='http://www.flasher.ru'>flasher.ru</a>]]>");
trace(_xml.childNodes[0]);
//&lt;a href=&apos;http://www.flasher.ru&apos;&gt;flasher.ru&lt;/a&gt;
trace(_xml.childNodes[0].nodeValue);
//<a href='http://www.flasher.ru'>flasher.ru</a>
Это так, пока, пища для размышлений =)
__________________
Hell is the possibility of sanity

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

Регистрация: Dec 2005
Сообщений: 94
я знаю что можно использовать nodevalue
но на данный момент нужно именоо xPath

Цитата:
Если есть желание подождать - прийду домой - сделаю =)
буду очень признателен

Старый 17.12.2007, 20:01
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ок, посмотрел код... а что вы хотите получить собственно? =\
- Массив из строк, где техт будет не ХТМЛ-енкодед?
- Массив из узлов? (частично включающих ЦДату)?
Код:
function getTitle(xml:XML) {
 var titles:Array =  XPath.selectNodes(xml, "/linkage/link/title/text()"); 
 
  for (var i=0; i<titles.length; i++) {
    trace("titles[" + i + "] : " +titles[i].nodeValue);
  }
}
getTitle2, getTitle3 Вернут узлы типа элемент, частью которого (в вашем случае первым дочерним нодом будет ЦДата - можно с ней посупить аналогично.
Просо, не понятна конечная цель, и смысл использования этого горячечного бреда... (хПас)
__________________
Hell is the possibility of sanity

Старый 17.12.2007, 20:07
mitien вне форума Посмотреть профиль Отправить личное сообщение для mitien Найти все сообщения от mitien
  № 7  
Ответить с цитированием
mitien
 
Аватар для mitien

Регистрация: Dec 2005
Сообщений: 94
содержимое потом в текстовое хтмл поле будет засовываться..
и если нужен будет жирный шрифт например то поле не считает, что полученный текст есть хтмл а выводит символы


getTitle2,getTitle3 выводят узлы но внутри там далеко не цдата, а текст.. хтмл разметка пропадат все равно..

Временно решил проблему заменой на нормальные символы

Код:
str=str.split('&lt;').join('<').split('&gt;').join('>')
Цитата:
Просо, не понятна конечная цель, и смысл использования этого горячечного бреда... (хПас)
есть альтернативы удобного поиска в xml по имени узла?

Старый 17.12.2007, 21:13
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 8  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Самому написать - меньше получаса работы...

Ок, попробую объяснить на более простом примере, что вы пытаетесь сделать, и почему это делать не нужно таким способом...
Код:
class SomeClass {
	private var __s:String = "";
	function SomeClass(s:String){
		_s = s;
	}
	public function toString():String {
		if(_s.indexOf("![CData")>-1){
			return escape(_s.slice(_s.indexOf("[",2)+1,_s.indexOf("]")));
		} else {
			return _s;
		}
	}
	public function get _s():String {
		return __s;
	}
	public function set _s(s:String):Void {
		__s = s;
	}
}
Код:
var _sc:SomeClass = new SomeClass("![CData[<H1>Header</H1>]]");
trace(_sc);
var _sc:SomeClass = new SomeClass("<H1>Header</H1>");
trace(_sc);
Итак, функция возвращает вам массив состоящий из объектов типа XMLNode, у них бывает еще и nodeType, который и указывает, каким образом нужно конвертировать экземпляр данного класса в строку. Так вот, узел типа CData конвертируется в строку именно таким способом - но это ни разу в жизни не значит, что его содержимое (nodeValue) является той строкой, которую вы видите в окне output'а! nodeValue - такое же свойство объекта, как и любое другое.
Вам, для того, чтобы воспользоваться тегом CData (иначе он вам вообще не нужен) нужно обращаться к его свойсву nodeValue, а не методу toString()/valueOf(). Иначе вы естественно получите то, что получаете =)
__________________
Hell is the possibility of sanity

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

Регистрация: Dec 2005
Сообщений: 94
хорошо. если хмлка будет несколько метров? вариантов решения обращения именно через
Код:
childNodes[i].nodeValue
сколько же раз придеться пробегать все дерево чтобы выдрать нужную часть?

Если же все это при одно заходе а потом в массивы, то памяти ест немеренно.. и тормоза..

Старый 18.12.2007, 16:27
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 10  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Млин, ну как это еще объяснить. Вы пытаетесь обратится не к тому методу и удивляетесь, что получаете не тот результат, которого ожидали? - Ну так вот работает ХMLNode.toString() - не нравится - не используйте/перепишите (хотя смысла я в этом не вижу).
И вообще, я не понимаю по прежнему что именно у вас не получается, и что вы хотите сделать. Вам selectNodes() возвращает массив из нодов (не строк). Нужно отобразить узел как строку - if NodeType != 4 -> выводим так. нет -> выводим хоть по-китайски.
__________________
Hell is the possibility of sanity

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

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

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


 


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


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