想象一下,有人使用 JXPath 作为一种访问语言,访问一棵树,该树具有某些节点,这些节点表示在内存中保存的集合非常大或昂贵 - 例如,
.../customers[id=12345]
客户确实在数据库中,并且数量众多。我不需要人们可以想象的所有查询的全部通用性——只需要像这样的几种索引良好的查询。
有没有一种实用的方法来使用 jxpath 的自定义功能来实现这些?如果是这样,你能指出我的例子、相关文档等吗?
查看JXPath 用户指南。您可以创建一个将查询作为参数的扩展函数。
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类型的第一个参数,如果你需要它可以给你上下文对象,等等。