Ha ha.. :-) I was wondering why you were being so open
about this stuff!
No harm done, and it's only a taste of some of the great
stuff we're thinking about, guys! ;-)
-Sho
From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Gordon Smith
Sent: Tuesday, May 17, 2005 5:32 PM
To: '[email protected]'
Subject: RE: [flexcoders] E4X in Flex 2.0, part 1: Reading XML
Somebody on the list can give me a job as a Flex developer.
- Gordon
-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of James Ward
Sent: Tuesday, May 17, 2005 5:24 PM
To: [email protected]
Subject: RE: [flexcoders] E4X in Flex 2.0, part 1: Reading XML
ROFL! Come on Gordon! If you are going to accidentally leak info, can
you make it a bit juicier? ;) Maybe something about some super-secret
project or the Adobe buyout or Flex 2 release dates. This is good info,
but not *that* exciting!
Still laughing... :)
-James
On Tue, 2005-05-17 at 17:15 -0700, Gordon Smith wrote:
> 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.
>
Yahoo! Groups Links
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.

