ECMAScript for XML (E4X) is a programming language extension that adds native XML support to ECMAScript (which includes ActionScript, DMDScript, JavaScript, JScript). The goal is to provide an alternative to DOM interfaces that uses a simpler syntax for accessing XML documents. It also offers a new way of making XML visible. Before the release of E4X, XML was always accessed at an object level. E4X instead treats XML as a primitive (like characters, integers, and booleans). This implies faster access, better support, and acceptance as a building block (data structure) of a program.

E4X is standardized by Ecma International in the ECMA-357 standard. The first edition was published in June 2004, the second edition in December 2005.


var sales = <sales vendor="John">
    <item type="peas" price="4" quantity="6"/>
    <item type="carrot" price="3" quantity="10"/>
    <item type="chips" price="5" quantity="3"/>
alert( sales.item.(@type == "carrot").@quantity );
alert( sales.@vendor );
for each( var price in sales..@price ) {
  alert( price );

Implementations Edit

The first implementation of E4X was designed by Terry Lucas and John Schneider and appeared in BEA's Weblogic Workshop 7.0 released in February 2002. BEA's implementation was based on Rhino and released before the ECMAScript E4X spec was completed in June 2004. John Schneider wrote an article on the XML extensions in BEA's Workshop at the time. The reference documentation for this pre-E4X language is still available.

E4X is implemented in SpiderMonkey (Gecko's JavaScript engine) and in Rhino (Mozilla's other JavaScript engine written in Java instead of C).

As Mozilla Firefox is based on Gecko, it can be used to run scripts using E4X. The specification is supported in the 1.5 release or later.

Note: To correctly run a script using Firefox 1.5 "; e4x=1" must be appended to the end of the script type attribute (e.g. <script type="text/javascript; e4x=1">).

Adobe's ActionScript 3 scripting language fully supports E4X. Early previews of ActionScript 3 were first made available in late 2005. Adobe officially released the language with Flash Player 9 on June 28, 2006.

E4X is available in Flash CS3, Adobe AIR and Adobe Flex as they use ActionScript 3 as a scripting language.

E4X is also available in Adobe Acrobat and Adobe Reader versions 8.0 or higher.

E4X is also avilable in Aptana's Jaxer Ajax application server which uses the Mozilla engine server-side.

Since the release of Alfresco Community Edition 2.9B, E4X is also available in this enterprise document management system.


Most e4x implementations don't have a means to import and export DOM nodes to/from the e4x model.



In the absence of E4X support, it is possible to use JSON instead of XML. JSON is an object-oriented data notation similar to XML. JSON is part of the ECMAScript (JavaScript) standard and works with all standard JavaScript engines. JSON has less powerful querying capabilities than E4X because the objects stored have a single index instead of multiple indices, as E4X does.

The above example would look like this with JSON and non-E4X dependent JavaScript:

var sales = {"vendor":"John","items":[
  {"type":"chips","price":"5","quantity":"3"} ]};
for( var i in sales.items) { if (sales.items[i].type=="carrot") alert( sales.items[i].quantity ); }
alert( sales.vendor );
for( var i in sales.items ) { alert( sales.items[i].price ); }

Resources Edit

fr:E4X ja:ECMAScript for XML pl:E4X zh:E4X

Ad blocker interference detected!

Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.