Показать сообщение отдельно
Старый 28.10.2009, 01:13
Artic вне форума Посмотреть профиль Найти все сообщения от Artic
  № 5  
Ответить с цитированием
Artic
Banned

Регистрация: Jun 2009
Сообщений: 298
вобщем я написал класс с этим 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">&lt;P ALIGN="LEFT"&gt;&lt;FONT FACE="Times Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"&gt;1&lt;/FONT&gt;&lt;/P&gt;</prop>
  <prop xmlns="PropertiesWindow">"images/Menu2009927235418/main/rootmenu/Untitled-1.jpg"</prop>
  <prop xmlns="PropertiesWindow">&lt;P ALIGN="LEFT"&gt;&lt;FONT FACE="Times Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"&gt;2&lt;/FONT&gt;&lt;/P&gt;</prop>
  <prop xmlns="PropertiesWindow">&lt;P ALIGN="LEFT"&gt;&lt;FONT FACE="Times Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"&gt;3&lt;/FONT&gt;&lt;/P&gt;</prop>
  <prop xmlns="PropertiesWindow">&lt;P ALIGN="LEFT"&gt;&lt;FONT FACE="Times Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"&gt;4&lt;/FONT&gt;&lt;/P&gt;</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


Последний раз редактировалось Artic; 28.10.2009 в 01:17.