【发布时间】:2012-04-04 16:51:46
【问题描述】:
有哪些选择,最好是在 Java 中?
我见过JXPath 将XPath 扩展到对象。还有什么吗?
编辑:通过树查询语言,我的意思是一种可以创建匹配已组织成树的对象(通过任何属性)的表达式的语言。
Edit2:示例:
假设我有这些对象的树:
public interface Node {
String getName();
int getValue();
String getSomeOtherAttribute();
List<Node> getChildren();
Node getParent();
}
现在想象一下这些的层次结构。我正在寻找的是可以在这棵树中查询实例的东西。例如“给我所有名称为“bar”、值小于 100 且父节点为“foo”且父节点的父节点为“joe”的 Node 实例。所有这些都用一种简洁的语言。
正如我所说,JXPath 是一种选择。寻找他人。我没有找到。
顺便说一句,我认为 JXPath 查询看起来像“//joe/foo/bar[@value
someroot
|
joe
/ | \
c d foo
/ \
f bar,99
【问题讨论】:
-
请说明您希望使用此查询语言实现的目标。有很多选择,这将有助于了解您的要求。
-
正如 Michael Slade 所说,您的用例将决定什么对您更有效。例如,JSoup 有很多用于处理 HTML 的工具,但假设它使用的 everything 是 HTML 并且不适合大多数 XML(树也可以用很多其他方式表示) .
-
有趣的问题,但是为什么你需要一种“语言”呢?只需编写一个树遍历算法,它会根据指定的条件进行检查。查询语言也会为您做同样的事情,只是将其抽象出来。很想知道,用例是什么?这将适用于类似列表的 DS。不确定树结构:code.google.com/p/sbql4j
-
我需要一种语言,因为用户希望能够编写自己的查询。如果你有传递给遍历算法的外部化表达式,那么基本上你就有了一种查询语言。
-
好的,我不确定您的详细用例,但是在代码级别提供它可能很难支持。为什么不为该树提供 Web API 并使用 eBay 的 ql.io 进行查询。 ql.io 将这些查询转换为 Web 服务调用。