我正在尝试解决这个问题,但是信息不多。哪些浏览器支持E4X,为什么没有更广泛地采用它?
哪些浏览器支持E4X
Firefox和其他基于Mozilla代码库的语言。
为什么它没有被更广泛地采用?
因为它提供的实用功能很少,而现有标准(例如DOM)尚未涵盖。
[确定,它比DOM更容易使用,但是代价是您无法使用XML的所有功能,而彻底愚蠢的,不必要的XML文字/模板语法是security disaster,因此即使是完全静态的htaccess保护文档的作者,也必须担心使用该功能。
作为访问XMLHttpRequest结果的一种更简单的方法,JSON完全胜出。对于完整的XML处理,您仍然需要DOM。为了简化文档的处理,可以使用选择器,XPath和JS库来执行此操作,而不必引入奇怪的新语言语法。
对于E4X而言,这没有多大利基。 TBH我希望它会死。 (ETA:现在已经完成了。)
版本16中的Firefox dropped E4X support:
E4X已过时。在Firefox 16中,默认情况下将禁用此功能,而在Firefox 17中,默认情况下将禁用chrome,在Firefox 18中将其删除。请改用DOMParser / DOMSerializer或非本机JXON算法。
根据w3schools,“ Firefox当前是唯一对E4X具有相对良好支持的浏览器。”
您可以改用XPath。尽管XPath并非跨浏览器,但仍有多种Javascript解决方案,例如this jQuery plugin。
编辑
您实际上可以在没有插件的情况下使用jQuery:
$('<xml><some><code>code</code><tag>text</tag></xml></xml>').find('some > code').text()
我开发了babel插件,可通过babel编译为所有浏览器添加E4X基本支持。
https://www.npmjs.com/package/babel-plugin-transform-simple-e4x
您还可以使用npm simple4x库将xml字符串解析为类似XML的对象。
https://www.npmjs.com/package/simple4x
该插件会转换以下E4X:
var fooId = 'foo-id';
var barText = 'bar text';
var xml =
<xml>
<foo id={fooId}>
{barText}
</foo>
</xml>;
至以下JavaScript:
var XML = new require("simple4x");
var fooId = 'foo-id';
var barText = 'bar text';
var xml = new XML("<xml><foo id=\"" + fooId + "\">" + barText + "</foo></xml>");