这只是一个简单的问题。我目前正在使用 Mozilla 的 Rhino 开发一个小的 webapp。作为一个步骤,我需要获取一个网页并过滤它的所有节点。为此,我使用 E4X。我以为我可以这样做:
var pnodes = doc..*(p);
但这会产生错误。它是如何正确完成的?
(顺便说一句:这只是提高性能的一步。代码已经做得很好,只是有点慢。)
这只是一个简单的问题。我目前正在使用 Mozilla 的 Rhino 开发一个小的 webapp。作为一个步骤,我需要获取一个网页并过滤它的所有节点。为此,我使用 E4X。我以为我可以这样做:
var pnodes = doc..*(p);
但这会产生错误。它是如何正确完成的?
(顺便说一句:这只是提高性能的一步。代码已经做得很好,只是有点慢。)
您应该能够使用以下内容:
doc..*.(name() == "p")
请注意,这在 Rhino 和 SpiderMonkey 实现中存在一个错误name() == "p"
,其中过滤器表达式没有正确地作用于当前节点,因此没有定义XML
orXMLList
方法。
另一个可行的解决方案是查找p
文档中的所有节点并将每个节点的父节点累积在一个数组中。
var elements = [];
for each (var p in doc..p) {
var parent = p.parent();
if(elements.indexOf(parent) === -1)
elements.push(parent);
}