вобщем я написал класс с этим XML
итак там схема такая
разбиваем XML на 3 Xml'я
( все поля все читается как нада )
далее из одного XML ( 1 ) берем узел в котором лежит еще один XML и создаем из этого узла XML далее пробую читать узлы созданного XML и получаю undefined
вобщем кодом будет более понятно

Код AS3:
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 ((((((
}
}
}
PS совсем не в тему, но вдруг кто то в теме: как в виртуалке расшарить буфер обмена ? а то я уже честно за .... лся через сторонии проги перегонять из FD в сафари )
Добавлено через 3 минуты
иерархия такая

Код:
<entire>
<typeTBL>MENU</typeTBL>
<unicObjectName><![CDATA[baseTemplate2009927235441]]></unicObjectName>
<type><![CDATA[content]]></type>
<contentbaseTemplate2009927235441hh>
<root>
<type xmlns="PropertiesWindow">txt</type>
....
</root>
</contentbaseTemplate2009927235441hh>
</entire>
Добавлено через 16 минут
так теперь пример пересылки
1 класс родитель так скажем

Код AS3:
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");
}
}
}
далее тот кто генерит и посылает данные

Код AS3:
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;
}
}
}
ну и CustomEvent

Код AS3:
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;
}
}
}
Добавлено через 19 минут
да, во всех примерах и везде, если трэйсить полностью XML, то он трейситься нормально
если трейсить отдельные узлы, например в классе создателя, то все тоже отлично
однако если переслать данные, то уже узлы не доступны и после сохранения и восстановления из базы, так же узлы уже undefined, хотя сами XML нормально выдаются ...
вобщем айнид хелп !!!
Добавлено через 50 минут
Цитата:
Сообщение от Felicast
вы либо работаете с xml как со строкой, либо я чего-то из вашего повествования не понял.
и еще вы в курсе что такое xmlns? на сколько я знаю его нельзя использовать в качестве атрибута
|
неа
а можно от него как то извабиться ? получить простой XML ??? так как видимо из за него есть ограниченность в использовании ( бред какой то, правда зачем XML ограничивать областью класса ? )
вобщем, кому не лень глянте примеры, которые я выше запостил, может найдете ошибку я уже не знаю куда смотреть, все упрощено до нескольких строк (((((
Добавлено через 56 минут
ну вот теперь я убежден что проблема в области видимости стоило переслать XML обратно в класс в котором он гененрировался как сразу узлы стали доступны !!!
итак как решать ??? как избавиться от этого злосчастного привязывание к классу ?
Добавлено через 7 часов 43 минуты
CLOSED ответ в namespace