有哪些选项,最好是Java?
我见过JXPath将XPath扩展到对象。还有别的吗?
编辑:通过树查询语言,我的意思是一种语言,可以创建与组织到树中的对象(通过任何属性)匹配的表达式。
Edit2:示例:
我们说我有一棵树这些物体:
public interface Node {
String getName();
int getValue();
String getSomeOtherAttribute();
List<Node> getChildren();
Node getParent();
}
现在想象一下这些的层次结构。我正在寻找的是可以查询此树中的实例的东西。例如&#34;给我所有名称为&#34; bar&#34;的节点实例,值小于100,父亲是&#34; foo&#34;父母的父母是&#34;乔&#34;。所有这些都用一种简洁的语言表达。
正如我所说,JXPath是一种选择。寻找他人。我还没找到。
BTW,我认为JXPath查询看起来像&#34; // joe / foo / bar [@value&lt; 100]&#34; (或类似的东西)
someroot
|
joe
/ | \
c d foo
/ \
f bar,99
答案 0 :(得分:1)
对于您自己创建的树结构,您可以应用Visitor Pattern。让您的节点接受访问者并编写检查标准并收集对象的各种访问者。
使用访问者还意味着您的代码将类型安全,而不是字符串中的查询。如果重命名getter方法,IDE将在所有访问者中重命名它们,您的代码仍然有效。如果您的查询在字符串中,则可能会中断。
除了JXPath之外,还有JoQL使用类似SQL的语言来查询对象,但它并不是真正用于树类型结构。