我正试图解决这个问题,但没有太多信息。哪些浏览器支持E4X,为什么它不被广泛采用?
答案 0 :(得分:10)
哪些浏览器支持E4X
Firefox和其他基于Mozilla代码库的人。
为什么不被广泛采用?
因为它提供的实用功能很少,但现有标准(如DOM)尚未涵盖。
好吧,它比DOM更简单,但是因为你不能访问XML的所有功能,而且完全愚蠢的,不必要的XML文字/模板语法是security disaster,因此,即使完全静态的受htaccess保护的文档的作者也不得不担心使用该功能。
作为访问XMLHttpRequest结果的一种更简单的方法,JSON完全赢了。对于全面的XML处理,您仍然需要DOM。为了便于文档处理,有选择器,XPath和JS库可以做到这一点,而无需引入奇怪的新语言语法。
这并没有为E4X留下太多利基。 TBH我希望它会死。 (ETA:它现在已经完成了。)
答案 1 :(得分:3)
根据w3schools,“Firefox目前是唯一一款对E4X提供相对较好支持的浏览器。”
您可以尝试使用XPath。虽然XPath不是跨浏览器,但它有几个Javascript解决方案,如this jQuery plugin。
修改强>
你实际上可以在没有插件的情况下使用jQuery:
$('<xml><some><code>code</code><tag>text</tag></xml></xml>').find('some > code').text()
答案 2 :(得分:3)
版本16中的Firefox dropped E4X support:
不推荐使用E4X。对于Firefox 16中的内容,默认情况下禁用它,默认情况下禁用Firefox 17中的chrome,并在Firefox 18中删除。使用DOMParser / DOMSerializer或非原生JXON算法。
答案 3 :(得分:0)
我开发了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>");