2012-03-08 43 views
0

我需要您對特定位代碼的幫助。返回具有特定屬性的元素JDOM

我在jdom中有一個document對象。我也有一個element對象的根。現在我想根據屬性的值來獲取特定的元素。但是我想避免的是過濾完整的兒童列表,以獲得一個元素。那麼是否有某種方法可以過濾文檔的值?

比方說我的屬性值是「123」

現在我想在「身份證」值「123」

什麼是做到這一點的最好辦法元素?

親切的問候。

回答

3

我會用XPath。以下表達式://element[@attribute='value']

+0

你能告訴我一些如何使用XPath與JDOM,因爲JDOM文檔都不是很具體的,也不是我找到的教程。 – 2012-03-08 14:18:32

+1

我從來沒有使用的XPath與JDOM,但我的猜測是,你建立使用'的XPath的xpath = XPath.newInstance XPath表達式(「//元素[@屬性=‘值’]」);'然後就評價它對着你的根元素(或文檔,TBC):'xpath.selectNodes(rootElement);'。有關XPath表達式的更多信息,google「xpath tutorial」,其中有很多 – 2012-03-08 15:12:44

2

如果我是這個問題面前,我會解決這個問題的方式有兩種:

1)如果我只需要一次搜索的元素找到與特定屬性的元素價值,我會做一個簡單的搜索。 JDOM的優點(和缺點)是將整個文檔放在內存中,因此即使元素很多,通過元素進行搜索也非常快速。即使你使用XPath(並且我承認對它不熟悉,但是發現以前的答案有啓發性),它們可能會做同樣的事情,所以這個解決方案可能效率不高。在一般情況下,使用預構建的解決方案可以節省您不必編寫代碼(雖然在這種情況下,您自己的代碼將是非常小的),但通常沒有更有效,往往效率較低,因爲你使用的是通用的解決方案,不是專門爲您的需求定製的。 2)如果我需要做多次搜索,那麼我會建立一個HashMap,其中鍵是屬性值。

如果你認爲這兩種解決方案有可取之處,但有一些額外的問題,或想一些示例代碼,請隨時給我發電子郵件以獲得更多信息。