![]() |
xPath
Подскажите плиз, кто работал с xPath для флэша, как полечить/обойти передачу CDATA < и >
все теги внутри цдаты передаются ескейп последовательностями а не обычными значками:( т.е Код:
<![CDATA[ <b>1 menu short ru</b> ]]> передаеться как <![CDATA[<b>1 menu short ru</b>]]> |
Работал с этим замечательным примером попытки пришить флешу класс тупо скопированый из другого языка. При первой же возможности выбросил -- чего и другим советую. Весь функционал этого многостраничного произведения умещается при желании в 1, максимум 2 файла по 200 строк максимум (оригинал раз эдак в 10 больше, если память не изменяет).
С CDat"ой мозгут быть 2 варианта - вы указываете на родительский нод, а не на нод с датой (тогда текст будет ХТМЛ-енкодед) или пользуйтесь escape/unescape. |
Вложений: 1
не помогло.
Все равно где встречается цдата заменяется:( |
Если есть желание подождать - прийду домой - сделаю =)
Код:
var _xml:XML = new XML("<![CData[<a href='http://www.flasher.ru'>flasher.ru</a>]]>"); |
я знаю что можно использовать nodevalue ;)
но на данный момент нужно именоо xPath:rolleyes: Цитата:
|
Ок, посмотрел код... а что вы хотите получить собственно? =\
- Массив из строк, где техт будет не ХТМЛ-енкодед? - Массив из узлов? (частично включающих ЦДату)? Код:
function getTitle(xml:XML) {Просо, не понятна конечная цель, и смысл использования этого горячечного бреда... (хПас) |
содержимое потом в текстовое хтмл поле будет засовываться..
и если нужен будет жирный шрифт например то поле не считает, что полученный текст есть хтмл а выводит символы getTitle2,getTitle3 выводят узлы но внутри там далеко не цдата, а текст.. хтмл разметка пропадат все равно.. Временно решил проблему заменой на нормальные символы Код:
str=str.split('<').join('<').split('>').join('>')Цитата:
|
Самому написать - меньше получаса работы...
Ок, попробую объяснить на более простом примере, что вы пытаетесь сделать, и почему это делать не нужно таким способом... Код:
class SomeClass {Код:
var _sc:SomeClass = new SomeClass("![CData[<H1>Header</H1>]]");Вам, для того, чтобы воспользоваться тегом CData (иначе он вам вообще не нужен) нужно обращаться к его свойсву nodeValue, а не методу toString()/valueOf(). Иначе вы естественно получите то, что получаете =) |
хорошо. если хмлка будет несколько метров? вариантов решения обращения именно через
Код:
childNodes[i].nodeValueЕсли же все это при одно заходе а потом в массивы, то памяти ест немеренно.. и тормоза.. |
Млин, ну как это еще объяснить. Вы пытаетесь обратится не к тому методу и удивляетесь, что получаете не тот результат, которого ожидали? - Ну так вот работает ХMLNode.toString() - не нравится - не используйте/перепишите (хотя смысла я в этом не вижу).
И вообще, я не понимаю по прежнему что именно у вас не получается, и что вы хотите сделать. Вам selectNodes() возвращает массив из нодов (не строк). Нужно отобразить узел как строку - if NodeType != 4 -> выводим так. нет -> выводим хоть по-китайски. |
| Часовой пояс GMT +4, время: 09:20. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.