我在 SpiderMonkey 中使用 E4X,大部分语言看起来都相当可靠,但我无法让过滤工作:
var xml = <root>
<person id="dave">Dave</person>
<person id="ian">Ian</person>
<person>John</person>
</root>
trace( xml.*.(name() == 'person') );
trace( xml.*.(attribute('@id')) );
预期的:
<person id="dave">Dave</person>
<person id="ian">Ian</person>
<person>John</person>
<person id="dave">Dave</person>
<person id="ian">Ian</person>
结果:
ReferenceError: name is not defined
ReferenceError: attribute is not defined
我什至不能让 hasOwnProperty() 工作:
xml.*.(trace( hasOwnProperty('@id') ));
false
false
false
具体来说,我在 Flash 中使用 JSFL,它使用 SpiderMonkey 引擎。
到目前为止,从我对 E4X 的基本了解来看,这是非常出乎意料/错误的,对吧?因为我可以让这些表达式在 ActionScript / FlashPlayer 中正常工作!
谢谢,戴夫