如何在jxpath中实现昂贵的查询?

时间:2013-02-04 16:58:55

标签: java jxpath

想象一下,人们正在使用JXPath作为一种访问语言进入一棵树,该树具有某些节点,这些节点代表在内存中难以保存的大型或昂贵的集合 - 例如,

.../customers[id=12345]

客户真正在数据库中,并且有大量的客户。我不需要人们可以想象的所有查询的完整通用性 - 只需要像这样的几种良好索引的查询。

使用jxpath的自定义功能是否有实用的方法来实现它们?如果是这样,你能指出我的例子,相关的文档等吗?

1 个答案:

答案 0 :(得分:1)

看看the JXPath User's Guide。您可以创建一个扩展函数,将查询作为参数。

public static NodeSet getCustomers(String query){
    List<Customer> l=getCustomersFromMyDatabase(query);
    BasicNodeSet bns=new BasicNodeSet();
    putCustomersIntoNodeSet(bns,l);
    return bns;
}

您的xpath看起来像

getCustomers('id=123')

您还可以使用 ExpressionContext 类型的第一个参数,如果需要,可以为您提供上下文对象等。