1

这只是一个简单的问题。我目前正在使用 Mozilla 的 Rhino 开发一个小的 webapp。作为一个步骤,我需要获取一个网页并过滤它的所有节点。为此,我使用 E4X。我以为我可以这样做:

var pnodes = doc..*(p);

但这会产生错误。它是如何正确完成的?

(顺便说一句:这只是提高性能的一步。代码已经做得很好,只是有点慢。)

4

1 回答 1

2

您应该能够使用以下内容:

doc..*.(name() == "p")

请注意,这在 Rhino 和 SpiderMonkey 实现中存在一个错误name() == "p",其中过滤器表达式没有正确地作用于当前节点,因此没有定义XMLorXMLList方法。


另一个可行的解决方案是查找p文档中的所有节点并将每个节点的父节点累积在一个数组中。

var elements = [];

for each (var p in doc..p) {
    var parent = p.parent();
    if(elements.indexOf(parent) === -1)
        elements.push(parent);
}
于 2010-05-25T18:08:27.450 回答