![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Banned
Регистрация: Jun 2009
Сообщений: 298
|
итак такая ситуация есть XML
<root> <type xmlns="PropertiesWindow">txt</type> <type xmlns="PropertiesWindow">photo</type> <type xmlns="PropertiesWindow">txt</type> <type xmlns="PropertiesWindow">txt</type> <type xmlns="PropertiesWindow">txt</type> <prop xmlns="PropertiesWindow"></prop> <prop xmlns="PropertiesWindow">"images/Menu2009927105854/mmmm/rootmenu/Untitled-1.jpg"</prop> <prop xmlns="PropertiesWindow"></prop> <prop xmlns="PropertiesWindow"></prop> <prop xmlns="PropertiesWindow"></prop> <pos xmlns="PropertiesWindow">4</pos> <pos xmlns="PropertiesWindow">5</pos> <pos xmlns="PropertiesWindow">6</pos> <pos xmlns="PropertiesWindow">7</pos> <pos xmlns="PropertiesWindow">8</pos> </root> думаю, ну ладно ошибка где то в загрузке и т/д/ ( проверяю так ) trace(myXML), в окне дебага вижу полностью нужный мне XML, но узел получить так и не могу !!! иду другим путем, перед загрузкой в базу ( после формирования ), пытаюсь обратиться к любому узлу и вуаля, в классе PropertiesWindow в, котором и генериться этот XML, доступ есть и все видится, отсылаю через диспачевент в другой класс и пытаюсь обратиться там ! и опять fail в чем я не прав ? и как сделать верно ? не ужели XML привязывается к классу ? оО |
|
|||||
|
Guest
Сообщений: n/a
|
а что такое samedatainbase? Если это строка, то нужно сделать так:
|
|
|||||
|
Banned
Регистрация: Jun 2009
Сообщений: 298
|
сейчас проверить не могу, но вопрос насчет пересылки так же остается открытым
с базы все приходит так private function answerServer(event:Event):void { var x:XML = XML(event.target.data); } так вот, как я делаю var same:XML = x.child("sameNeedNode")[0]; trace(same) // получаю XML, который выше ,но не к одному его узлу не могу обратиться ! создаю XML ,в классе PropertiesWindow, все узлы видятся, все хорошо ! далее создаю кастомное событие в котором через object пересылаю этот XML в другой класс диспач (new CustomEvent(same.same,{myXML:myXML},true)); // сорри за русский в названии метода просто забыл дословно как пишется ( автокомплит разучивает ) вешаю листенер и получаю данные event.data.myXML и все ! трэйс XML выдает ! но узлы не доступны !!! что за мистика то такая ? PS я надеюсь все поняли, что CustomEvent это обычное расширение класса Event, в котором можно передать переменные, то есть есть класс наследуемый от Event и помимо всех своих обычных функций, у него есть еще переменная data:Object, в которой можно переслать, что требуется ,не каких конвертаций поидеи не происходит, но XML перестает отдавать узлы это факт !! ((((( |
|
|||||
|
вы либо работаете с xml как со строкой, либо я чего-то из вашего повествования не понял.
и еще вы в курсе что такое xmlns? на сколько я знаю его нельзя использовать в качестве атрибута
__________________
я могу стать всем, если только захочу |
|
|||||
|
Banned
Регистрация: Jun 2009
Сообщений: 298
|
вобщем я написал класс с этим XML
итак там схема такая разбиваем XML на 3 Xml'я ( все поля все читается как нада ) далее из одного XML ( 1 ) берем узел в котором лежит еще один XML и создаем из этого узла XML далее пробую читать узлы созданного XML и получаю undefined вобщем кодом будет более понятно package { import com.hexagonstar.util.debug.Debug import flash.display.Sprite; /** * ... * @author I */ public class SameTestXMLCLass extends Sprite { public function SameTestXMLCLass() { var commingXML:XML = <entire> <typeTBL>MENU</typeTBL> <unicObjectName><![CDATA[baseTemplate2009927235441]]></unicObjectName> <type><![CDATA[content]]></type> <contentbaseTemplate2009927235441hh><![CDATA[<root> <type xmlns="PropertiesWindow">txt</type> <type xmlns="PropertiesWindow">photo</type> <type xmlns="PropertiesWindow">txt</type> <type xmlns="PropertiesWindow">txt</type> <type xmlns="PropertiesWindow">txt</type> <prop xmlns="PropertiesWindow"><P ALIGN="LEFT"><FONT FACE="Times Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">1</FONT></P></prop> <prop xmlns="PropertiesWindow">"images/Menu2009927235418/main/rootmenu/Untitled-1.jpg"</prop> <prop xmlns="PropertiesWindow"><P ALIGN="LEFT"><FONT FACE="Times Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">2</FONT></P></prop> <prop xmlns="PropertiesWindow"><P ALIGN="LEFT"><FONT FACE="Times Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">3</FONT></P></prop> <prop xmlns="PropertiesWindow"><P ALIGN="LEFT"><FONT FACE="Times Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">4</FONT></P></prop> <pos xmlns="PropertiesWindow">4</pos> <pos xmlns="PropertiesWindow">5</pos> <pos xmlns="PropertiesWindow">6</pos> <pos xmlns="PropertiesWindow">7</pos> <pos xmlns="PropertiesWindow">8</pos> </root>]]></contentbaseTemplate2009927235441hh> <typeTBL>interface</typeTBL> <interfaceX><![CDATA[0]]></interfaceX> <typeTBL>template</typeTBL> <templateName><![CDATA[baseProduct]]></templateName> </entire> var xml:XML = commingXML; var aLists:Array = []; xml.*.(localName().toString() === "typeTBL" ? aLists.unshift(<entire>{XMLList(valueOf())}</entire>) : aLists[0].* += valueOf()); aLists = aLists.reverse(); var menuXML:XML = aLists[0]; var interfaceXML:XML = aLists[1]; var templateXML:XML = aLists[2]; var unicObjectName:String = "contentbaseTemplate2009927235441hh" var ss:XML = new XML(menuXML.child(unicObjectName)[0]); Debug.trace(ss.prop[1]+" IN SAMETEST") // undefined IN SAMETEST (((((( } } } Добавлено через 3 минуты иерархия такая <entire>
<typeTBL>MENU</typeTBL>
<unicObjectName><![CDATA[baseTemplate2009927235441]]></unicObjectName>
<type><![CDATA[content]]></type>
<contentbaseTemplate2009927235441hh>
<root>
<type xmlns="PropertiesWindow">txt</type>
....
</root>
</contentbaseTemplate2009927235441hh>
</entire>
так теперь пример пересылки 1 класс родитель так скажем package { import flash.display.Sprite; import flash.events.*; import com.hexagonstar.util.debug.Debug; /** * ... * @author I */ public class SameListenerClass extends Sprite { public function SameListenerClass() { var n:SameTestXMLCLass = new SameTestXMLCLass(); addChild(n); n.addEventListener(SameTestXMLCLass.SENDDATA, testData); } private function testData(event:CustomEvent):void { Debug.trace(event.data.dataXML.prop[1]+" IN SAME LISTENER"); } } } package { import com.hexagonstar.util.debug.Debug import flash.display.Sprite; import flash.events.*; /** * ... * @author I */ public class SameTestXMLCLass extends Sprite { public static var SENDDATA:String = "senddata"; public function SameTestXMLCLass() { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(event:Event = null):void { var commingXML:XML = generateData(); } private function generateData():XML { var x:XML = new XML("<root/>"); for (var i:int = 0; i < 10; i++ ) { x.type[i] = i; x.prop[i] = i; } dispatchEvent(new CustomEvent(SameTestXMLCLass.SENDDATA, { dataXML:x }, true)); return x; } } } package { import flash.events.Event; /** * ... * @author I */ public class CustomEvent extends Event { private var _data:Object; public function CustomEvent(type:String,data:Object=null,bubbles:Boolean=false,cancelable:Boolean=false) { super(type, bubbles, cancelable); _data = data; } public function get data():Object { return _data; } } } да, во всех примерах и везде, если трэйсить полностью XML, то он трейситься нормально если трейсить отдельные узлы, например в классе создателя, то все тоже отлично однако если переслать данные, то уже узлы не доступны и после сохранения и восстановления из базы, так же узлы уже undefined, хотя сами XML нормально выдаются ... вобщем айнид хелп !!! Добавлено через 50 минут Цитата:
а можно от него как то извабиться ? получить простой XML ??? так как видимо из за него есть ограниченность в использовании ( бред какой то, правда зачем XML ограничивать областью класса ? ) вобщем, кому не лень глянте примеры, которые я выше запостил, может найдете ошибку я уже не знаю куда смотреть, все упрощено до нескольких строк ((((( Добавлено через 56 минут ну вот теперь я убежден что проблема в области видимости стоило переслать XML обратно в класс в котором он гененрировался как сразу узлы стали доступны !!! итак как решать ??? как избавиться от этого злосчастного привязывание к классу ? Добавлено через 7 часов 43 минуты CLOSED ответ в namespace Последний раз редактировалось Artic; 28.10.2009 в 01:17. |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:33. |
|
|
« Предыдущая тема | Следующая тема » |
|
|