I got around to trying the E4X-based query structure this morning, and it works like a charm. It's now possible to write your queries like this:
Query.execute(
 <query>
   update contact set
    name = :name,
    email = :email
   where id = :id
 </query>,
 {
   id: new QueryParam(id, "integer"),
   name: new QueryParam(name),
   email: new QueryParam(email)
 }
);
There's still an extra layer in there (i.e. the Query type and the <query> element), but the SQL is far more cleanly differentiated from the javascript, which is a big plus. I've updated the core and sample application in Subversion with the changes to allow this syntax (the string-based syntax is still supported), along with various other little changes, including a full import of the browser-agnostic portions of Prototype (Object, Array, Hash, String, Template, etc.).
I also tried the "add the execute method to the XML class" route that I wrote about, and that doesn't work. It seems that the E4X class (XML, XMLList, etc.) are sealed and can't have additional stuff added to them. That's a bummer, but such is life.
The fact that some classes are sealed in Flex should not stop you.
Create your own one-liner version when needed, i.e.
dynamic class MyXMLList extends XMLList{}
Now you can do whatever you want with MyXMLList.
Yakov,
While that'll work for things created with a constructor, it won't work for literals.
new MyXML().customMethod(); // would work
stuff .customMethod(); // no dice
The latter syntax is the one I'm particularly interested in, because it's transparent. You could also use a hybrid to make it work:
new MyXML(stuff ).customMethod();
Of course, that's not any better than what I've got already:
new Query(… ).execute();