2014-10-20 23 views
0

我使用的是Java Scripting API,它工作得很好。現在我有一個函數,我想要從String中獲取所有<a>標記,然後在返回操縱的String之前添加/刪除屬性。問題當然是,我不能只使用document.getElementsByTagName。是否有任何簡單的選項,而不經過正則表達式?使用java javascript scripting API操作HTML節點

請注意,我目前正在運行Java 7(與犀牛),計劃更新到Java 8(與Nashorn),所以我不想使用任何Rhino特定的API。

回答

1

在Addi Osmani的書「學習JavaScript設計模式」一書中,作者提到了3種類似問題的替代方案,顯然是getElementById()最快的方法。從本書

摘錄:

假設我們有一個腳本,每個DOM元素與類 頁上的「富」,我們要遞增計數器。什麼是最有效的方式來查詢這個元素的集合?嗯,有 幾個不同的方法解決此問題可以解決:

  • 所有頁面中的元素,然後引用存儲選擇他們。接下來,過濾這個集合並使用正則表達式(或另一種方式)來存儲那些只有類「foo」的集合。
  • 使用現代原生瀏覽器功能(如querySelectorForAll())來選擇類爲「foo」的所有元素。
  • 使用netive功能如getElementsByClassName()以同樣...

另一種方法是,因爲你正在使用犀牛/犀牛,您可以使用Java實現的Xerces庫操作DOM 。

希望這可以幫助您找出解決方案。