這只是一個簡單的問題。我目前正在使用Mozilla的Rhino開發一個小的web應用程序。作爲一個步驟,我需要獲取網頁並過濾所有節點。爲此,我使用E4X。我以爲我可以這樣做:在E4X中過濾
var pnodes = doc..*(p);
但是,這會產生一個錯誤。它是如何做對的?
(BTW:這僅僅是提高性能的步驟中的代碼已經做得很好,只是有點慢。)
這只是一個簡單的問題。我目前正在使用Mozilla的Rhino開發一個小的web應用程序。作爲一個步驟,我需要獲取網頁並過濾所有節點。爲此,我使用E4X。我以爲我可以這樣做:在E4X中過濾
var pnodes = doc..*(p);
但是,這會產生一個錯誤。它是如何做對的?
(BTW:這僅僅是提高性能的步驟中的代碼已經做得很好,只是有點慢。)
您應該能夠使用以下命令:
doc..*.(name() == "p")
注在Rhino和SpiderMonkey實現中有一個bug,其中過濾器表達式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);
}
你只是想在頁面上獲得**所有**節點,包括嵌套的節點嗎? – Anurag 2010-05-25 17:34:28
是的,我想讓每個有p節點的節點都是它的子節點。 – fb55 2010-05-25 18:10:57