2012-03-08 46 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,其中键是属性值。

如果你认为这两种解决方案有可取之处,但有一些额外的问题,或想一些示例代码,请随时给我发电子邮件以获得更多信息。