heheheheheheh thats funny. I had to do a double take and thought "am i reading the right list here or..."
Nice work ;) On 5/18/05, Hans Omli <[EMAIL PROTECTED]> wrote: > > I don't suppose we'll be reading part 2 of this email via FlexCoders then. > ;-) > > ________________________________ > From: [email protected] [mailto:[EMAIL PROTECTED] On > Behalf Of Gordon Smith > Sent: Tuesday, May 17, 2005 5:15 PM > To: '[email protected]' > Subject: RE: [flexcoders] E4X in Flex 2.0, part 1: Reading XML > > > > Oops... I meant to send this to an internal group, not to flexcoders. Enjoy > the information, but, for now, don't expect this level of detail about our > future plans. Of course, we do want your feedback on features for the next > release, and we'll be sharing more plans with you in the future, as we get > closer to the next release. > > Sorry, > Gordon > > > -----Original Message----- > From: [email protected] [mailto:[EMAIL PROTECTED] On > Behalf Of Gordon Smith > Sent: Tuesday, May 17, 2005 4:54 PM > To: '[email protected]' > Subject: [flexcoders] E4X in Flex 2.0, part 1: Reading XML > > > > > > As you may have gathered, we've been spending a lot of time lately > leveraging the new features of the Flash Player in the new Flex application > model. Naturally, you'll also be able to leverage those same new features, > so we thought we'd start giving you a run down of what's new. Of course we > don't have beta software for you to play with yet, so for now, we'll provide > a lot of detail so you can evaluate these new features and give guidance for > us. > > > > XML manipulation in Flex 2.0 is going to get a lot more powerful, as well as > faster. By the time that Flex 2.0 ships, the Flash Player will support E4X > ("ECMAScript for XML"), a set of programming language extensions adding > native XML support to ECMAScript. The player team is busy implementing > Standard ECMA-357 as described in > http://www.ecma-international.org/publications/standards/Ecma-357.htm. > > > > > > Here's how the spec describes what this feature offers: "E4X adds native XML > datatypes to the ECMAScript language, extends the semantics of familiar > ECMAScript operators for manipulating XML objects and adds a small set of > new operators for common XML operations, such as searching and filtering. It > also adds support for XML literals, namespaces, qualified names and other > mechanisms to facilitate XML processing." > > > > > > Lets take a look at a few examples of how you can read XML data using E4X. > > > > > > As in the current player, you'll be able to create variables of type XML by > parsing a String. But XML literals will now be supported as well: > > > > > > var employees:XML = > <employees> > <employee ssn="123-123-1234"> > <name first="John" last="Doe"/> > <address> > <street>11 Main St.</street> > <city>San Francisco</city> > <state>CA</state> > <zip>98765</zip> > </address> > </employee> > <employee ssn="789-789-7890"> > <name first="Mary" last="Roe"/> > <address> > <street>99 Broad St.</street> > <city>Newton</city> > <state>MA</state> > <zip>01234</zip> > </address> > </employee> > </employees>; > > > > > > Instead of using DOM-style APIs like firstChild, nextSibling, etc., with E4X > you just "dot down" to grab the node you want. Multiple nodes are indexable > with [n], similar to the elements of an Array: > > > > > > trace(employees.employee[0].address.zip); > > > --- > > > 98765 > > > > > > To grab an attribute, you just use the .@ operator: > > > > > > trace([EMAIL PROTECTED]); > --- > > > > 789-789-7890 > > > > > > If you don't pick out a particular node, you get all of them, as an > indexable list: > > > > > > trace(employees.employee.name); > > > --- > > > <name first="John" last="Doe"/> > > > <name first="Mary" last="Roe"/> > > > > > > (And note that nodes even toString() themselves into formatted XML!) > > > > > > > A handy double-dot operator lets you omit the "path" down into the XML > expression, so you could shorten the previous three examples to > > > > > > trace(employees..zip[0]); > > > > trace([EMAIL PROTECTED]); > > > > trace(employees..name); > > > > > You can use a * wildcard to get a list of multiple nodes or attributes with > various names, and the resulting list is indexable: > > > > > > trace(employees.employee[0].address.*); > > > --- > > > <street>11 Main St.</street> > > > <city>San Francisco</city> > > > <state>CA</state> > > > <zip>98765</zip> > > > trace([EMAIL PROTECTED]); > --- > > > Doe > > > > > > You don't have to hard-code the identifiers for the nodes or attributes... > they can themselves be variables: > > > > > > > > var whichNode:String = "zip"; > trace(employees.employee[0].address[whichNode]); > > > --- > > > 98765 > > > > > > > var whichAttribute:String = "ssn"; > trace([EMAIL PROTECTED]); > --- > > > 789-789-7890 > > > > > > A new for-each loop lets you loop over multiple nodes or attributes: > > > > > > for each (var ssn:XML in [EMAIL PROTECTED]) > > > { > > > trace(ssn); > > > } > > > --- > > > 123-123-1234 > 789-789-7890 > > > > > > Most powerful of all, E4X supports "predicate filtering" using the syntax > .(condition), which lets you pick out nodes or attributes that meet a > condition you specify using a Boolean expression. For example, you can pick > out the employee with a particular social security number like this, and get > her state: > > > > > > var ssnToFind:String = "789-789-7890"; > trace(employees.employee.(@ssn == ssnToFind)..state); > --- > > > MA > > > > > > Instead of using a simple conditional operator like ==, you can also write a > complicated predicate filtering function to pick out the data you need. > > > > > > By the way, although none of my examples use XML namespaces, E4X has > complete support for them. > > > > > > Compared with the current XML support in the Flash Player, E4X allows you to > write less code and execute it faster because more processing can be done at > the native speed of C++. > > > > > > Since E4X is so powerful, we're working to make Flex 2.0 play nicely with > it. Components like List, ComboBox, and DataGrid will be able to accept E4X > expressions like employees..name as a dataProvider. The <mx:XML> tag will be > able to declare an E4X-style XML object in MXML. WebService and HTTPService > will be able to deliver E4X-style XML objects across the wire, and they'll > use the speed of E4X to do their own work (such as constructing and > desconstrucing SOAP packets) faster. > > > > > > For backward compability, the new player will continue to support the > old-style XML and XMLNode objects, with the one change that the old XML > class will be renamed to XMLDocument. The renaming is necessary because the > E4X standard specifies that the new type be called XML. So if you have XML > code and you want to continue using, just use XMLDocument instead. But we'll > be encouraging everyone to migrate to E4X because it is so much simpler, > faster, and more expressive. > > > > > > Please let us know whether you'll find E4X useful in your particular > applications. > > > > > > - Gordon > > > > > > > > > > > > ________________________________ > Yahoo! Groups Links > > > To visit your group on the web, go to: > http://groups.yahoo.com/group/flexcoders/ > > To unsubscribe from this group, send an email to: > [EMAIL PROTECTED] > > Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service. -- Regards, Scott Barnes http://www.mossyblog.com http://www.flexcoder.com (Coming Soon) Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/

