aharui commented on issue #562: Tree component in Royale can not render with a kind of XML data, which is working with Flex URL: https://github.com/apache/royale-asjs/issues/562#issuecomment-554822616 There is some interesting Flex compiler behavior. Here is the test case I put together: ``` <mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" applicationComplete="runTest()"> <fx:Script> <![CDATA[ private function runTest():void { trace("fxxmlList: " + fxxmlList.length()); trace("fxxmlList2: " + fxxmlList2.length()); //trace("fxxmlList3: " + fxxmlList3.length()); trace("xmlList: " + xmlList.length()); trace("xmlList2: " + xmlList2.length()); trace("xmlList3: " + xmlList3.length()); //trace("xmlList4: " + xmlList4.length()); trace("xmlList5: " + xmlList5.length()); //trace("xmlList6: " + xmlList6.length()); } // String with one top node private var xmlList:XMLList = new XMLList( '<node label="Mail Box">' + '<node label="Inbox">' + '<node label="Marketing"/>' + '<node label="Product Management"/>' + '<node label="Personal"/>' + '</node>' + '<node label="Outbox">' + '<node label="Professional"/>' + '<node label="Personal"/>' + '</node>' + '<node label="Spam"/>' + '<node label="Sent"/>' + '</node>'); // String with XMLListLiteral as one top node private var xmlList2:XMLList = new XMLList( '<>' + '<node label="Inbox">' + '<node label="Marketing"/>' + '<node label="Product Management"/>' + '<node label="Personal"/>' + '</node>' + '<node label="Outbox">' + '<node label="Professional"/>' + '<node label="Personal"/>' + '</node>' + '<node label="Spam"/>' + '<node label="Sent"/>' + '</>'); // String with no top node private var xmlList3:XMLList = new XMLList( '<node label="Inbox">' + '<node label="Marketing"/>' + '<node label="Product Management"/>' + '<node label="Personal"/>' + '</node>' + '<node label="Outbox">' + '<node label="Professional"/>' + '<node label="Personal"/>' + '</node>' + '<node label="Spam"/>' + '<node label="Sent"/>'); /* single node is XML (not XMLList) so Flex compiler says no. // XMLLiteral (one top node) private var xmlList4:XMLList = <node label="Mail Box"> <node label="Inbox"> <node label="Marketing"/> <node label="Product Management"/> <node label="Personal"/> </node> <node label="Outbox"> <node label="Professional"/> <node label="Personal"/> </node> <node label="Spam"/> <node label="Sent"/> </node>; */ // XMLListLiteral as one top node private var xmlList5:XMLList = <> <node label="Inbox"> <node label="Marketing"/> <node label="Product Management"/> <node label="Personal"/> </node> <node label="Outbox"> <node label="Professional"/> <node label="Personal"/> </node> <node label="Spam"/> <node label="Sent"/> </>; /* Flex compiler outputs errors about the Outbox and following nodes // XML nodes but no top node private var xmlList6:XMLList = <node label="Inbox"> <node label="Marketing"/> <node label="Product Management"/> <node label="Personal"/> </node> <node label="Outbox"> <node label="Professional"/> <node label="Personal"/> </node> <node label="Spam"/> <node label="Sent"/> */ ]]> </fx:Script> <fx:Declarations> <!-- one top node --> <fx:XMLList id="fxxmlList"> <node label="Mail Box"> <node label="Inbox"> <node label="Marketing"/> <node label="Product Management"/> <node label="Personal"/> </node> <node label="Outbox"> <node label="Professional"/> <node label="Personal"/> </node> <node label="Spam"/> <node label="Sent"/> </node> </fx:XMLList> <!-- no top node --> <fx:XMLList id="fxxmlList2"> <node label="Inbox"> <node label="Marketing"/> <node label="Product Management"/> <node label="Personal"/> </node> <node label="Outbox"> <node label="Professional"/> <node label="Personal"/> </node> <node label="Spam"/> <node label="Sent"/> </fx:XMLList> <!-- XMLLListLiteral as one top node Flex compiler says that CDATA is not allowed, so no way to use XMLListLiteral in fx:XMLList <fx:XMLList id="fxxmlList3"><![CDATA[ <> <node label="Inbox"> <node label="Marketing"/> <node label="Product Management"/> <node label="Personal"/> </node> <node label="Outbox"> <node label="Professional"/> <node label="Personal"/> </node> <node label="Spam"/> <node label="Sent"/> </> ]]> </fx:XMLList> --> <!-- Flex compiler says to use the CDATA like in fxxmlList3 <fx:XMLList id="fxxmlList4"> <> <node label="Inbox"> <node label="Marketing"/> <node label="Product Management"/> <node label="Personal"/> </node> <node label="Outbox"> <node label="Professional"/> <node label="Personal"/> </node> <node label="Spam"/> <node label="Sent"/> </> </fx:XMLList> --> </fx:Declarations> <mx:Label text="XMLList Test" /> </mx:Application> ``` The output is: ``` [trace] fxxmlList: 1 [trace] fxxmlList2: 4 [trace] xmlList: 1 [trace] xmlList2: 4 [trace] xmlList3: 4 [trace] xmlList5: 4 ``` The most interesting results for me are: * in fx:XMLList, you can't use XMLListLiterals but you must use them in AS. * in XMLList String conversion, the XMLListLiteral is essentially ignored and whatever else remains is the list. We will adjust Royale to match this behavior.
---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected] With regards, Apache Git Services
