![]() |
ХML: Запретить создавать любые аттрибуты, кроме нужных?
Поскольку наследовать от ХМЛя низзя (но иногда очень бы хотелось... =) Возникает вопрос, как можно было бы организовать такую штуку:
Существует под-формат ХМЛя позволяющий только определенные имена тэгов / аттрибутов + регламентирующий, что в этих аттрибутах может быть. Но ради реализации этого формата не хочется придумывать ХМЛ еще раз, а использовать его возможности... С именами элементов проблему решил следующим образом: класс динамический, и когда у него пытаются создать свойство, названия которого нет в списке - выдает ошибку. А вот сделать то же самое с аттрибутами не получается - т.как обращение к аттрибуту типа @attributeName для не ХМЛ/ХМЛЛиста вызовет ошибку... Есть какие-нибудь идеи по этому поводу? |
есть такой паттерн, "обертка" называется, почитай про него, как вариант... )
паттерны |
wvxvw я вас не совсем понял... Что-то типа такого вы хотите:
Код:
packageКод:
import LimitedXMLList;Цитата:
|
Проблема насколько я понимаю заключается в том, что хочется сделать свой тип, который будет поддерживать @ - оператор доступа к атрибуту. ActionScript в нынешней своей версии не позволяет подобно с++ прописывать поведение операторов, честно не знаю как правильно это назвать, так что знающие люди поправьте.
Например, у нас есть класс Vector, одна из возможных операций это складывание векторов. В ActionScript нет возможности использовать конструкцию vector1 + vector2, поскольку + оператор сложения, который можно применять для строк, чисел и тд. Но нет возможности заставить этот оператор правильно сложить два экземпляра класса Vector. Поэтому реализовать данную операции можно только через создание соответствующего метода. Здесь насколько я понимаю ситуация схожая, есть желание использовать оператор @ для не XML или XMLList объектов. Собственно и реализация может быть только в виде метода. |
ulik:
Да, мысль примерно правильная, только так делать очень нееффективно... vooparker Угу, в итоге все закончилось написанием своего ХМЛ-подобного класса (вернее группы классов) и использованию $ вместо @. |
wvxvw >> Ну, эт ясно. Я просто, чтоб понять точно о чем речь. А вообще vooparker прав. Жаль, что нельзя...
|
Цитата:
|
если бы... Флеш не воспринимает @ после точки как строку... т.е. я не смогу обнаружить, обращаюсь ли я к аттрибуту или к ноду...
т.е. getProperty() видит customProxy.@attr и customProxy.attr одинаково... (как будто @ там нету) edited: а, ой, сорри про isAttribute не заметил =) вот млин, а я мучался =) Млин, даж нинаю, прям обрадовался... а ларчик то просто открывался =) |
| Часовой пояс GMT +4, время: 05:43. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.