1

これは単純な質問です。私は現在、MozillaのRhinoを使用して小さなWebアプリを開発しています。1つのステップとして、Webページを取得し、そのすべてのノードをフィルタリングする必要があります。そのために、私はE4Xを使用します。私はこのようにこれを行うことができると思いました:

var pnodes = doc..*(p);

しかし、それはエラーを生成します。それはどのように正しく行われますか?

(ところで:これはパフォーマンスを向上させるための単なるステップです。コードはすでにうまく機能していますが、少し遅いです。)

4

1 に答える 1

2

以下を使用できるはずです。

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

これは 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);
}
于 2010-05-25T18:08:27.450 に答える