已废弃
Warning: E4X已经过时.从Firefox 17开始,E4X在普通网页中被默认禁用,从Firefox 20开始,E4X在浏览器界面中被默认禁用,从Firefox 21开始,E4X被完全删除.使用DOMParser/DOMSerializer或者其他算法来代替.
ECMAScript for XML (E4X) is a programming language extension that adds native XML support to JavaScript. It does this by providing access to the XML document in a form that feels natural for ECMAScript programmers. The goal is to provide an alternative, simpler syntax for accessing XML documents than via DOM interfaces. A valid alternative to E4X is a non-native JXON algorithm.
E4X is standardized by Ecma International in ECMA-357 standard (currently in its second edition, December 2005).
E4X is implemented (at least partially) in SpiderMonkey (Gecko's JavaScript engine) and in Rhino (JavaScript engine written in Java).
<script>
element needs to have the MIME type "text/javascript;e4x=1" (i.e. have an attribute of the form type="text/javascript;e4x=1"
). The difference between the two modes is that without the "e4x=1" MIME type, any statement-level XML/HTML comment literals (<!--...-->
) are ignored for backwards compatibility with the comment hiding trick, and CDATA sections (<![CDATA[...]]>
) are not parsed as CDATA literals (which leads to a JS syntax error in HTML since HTML's <script>
element produces an implicit CDATA section, and therefore cannot contain explicit CDATA sections).
someone verify the above
已经的bug和限制
- It is not currently possible to access a DOM object through E4X (bug 270553)
- E4X doesn't support parsing XML declaration (
- <?xml version=...?>) (see bug 336551). You may get SyntaxError "xml is a reserved identifier" (despite the XML being in a string).
Workaround:
var response = xmlhttprequest.responseText; // bug 270553 response = response.replace(/^<\?xml\s+version\s*=\s*(["'])[^\1]+\1[^?]*\?>/, ""); // bug 336551 var e4x = new XML(response);
资源
- E4X Tutorial Processing XML with E4X on MDN.
- E4X for templating
- See the list of E4X-related pages on MDN:
- ECMA-357 standard
- Brendan's presentation
- E4X at faqts.com
- E4X quick reference at rephrase.net