javascript - 在 E4X 中过滤

标签 javascript rhino e4x

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

var pnodes = doc..*(p);

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

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

最佳答案

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

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

请注意,这里有一个 bug在 Rhino 和 SpiderMonkey 实现中,过滤器表达式 name() == "p" 没有正确地限定到当前节点,所以 XML 都没有定义了 XMLList 方法。


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

var elements = [];

for each (var p in doc..p) {
    var parent = p.parent();
    if(elements.indexOf(parent) === -1)
        elements.push(parent);
}

关于javascript - 在 E4X 中过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2906907/

相关文章:

javascript - IE8 提示 Prototype, "' undefined' 为 null 或不是对象”

javascript - jslint、jsdoc 和 rhino 集成以从命令行运行?

javascript - E4X 与 NodeJS

javascript - 用 javascript 写入文件

javascript - 如何在不使用 setTimeout 的情况下异步运行 javascript 函数?

xml - 在 AS3 中使用 E4X 在 XML 节点中创建新属性

javascript - 使用我的变量将子项添加到 E4X

javascript - VB.NET 数据从父窗口回发的模式弹出窗口中清除

javascript - 当运行 Angular 8 生产 : Delete of an unqualified identifier in strict mode

javascript - 自定义 mongodb 搜索对象?