我有几个域类都继承了 BaseDomain 类。
在这个 BaseDomain 类中,我有一个公共最终字符串名称字段;
name 的值在构造函数中设置。
public class BaseDomain {
public final String name;
public BaseDomain() {
this.name = this.getClass().getCanonicalName();
}
}
这个 BaseDomain 由几个类扩展
public class Trip extends BaseDomain {
private int id;
public Trip(int id){
this.id = id;
}
}
到目前为止,一切都很好。
我想在 JXPath 的帮助下获取 Trip 的对象实例中字段“名称”的值,但不能。我可以访问“id”字段,但不能访问“name”字段。
JXPathContext jxPathContext = JXPathContext.newContext(trip);
jxPathContext.setLenient(true);
int id = (int)jxPathContext.getValue("/@id"); // This works.
String name = (String)jxPathContext.getValue("/@name"); // This does not work.
是否可以使用此设置和 JXPath 获取“名称”的值?
代码可能有一些语法错误和/或其他错误。我希望你们都明白我的想法并理解我的问题。
欢迎任何帮助或指示。
首先:我要感谢 Kelly S. French 的快速回放。这让我意识到我必须解释更多。
我想使用 jxpath,因为我最终会进行更深入的搜索。例如:Trip 可能包含一个位置列表,该列表也扩展了 BaseDomain。每个位置都可以包含扩展 BaseDomain 的 PointOfInterest 列表。
通过代码其他部分的反射,我希望能够根据它们的类型(class.getCanonicalName())获取 BaseDomain 列表
对象树不是基于 xml,它是纯 POJO。
据我所知,没有办法编写 jxpath-query 来根据对象的类型、类名等查找对象列表。
这个对吗?有人知道这样做的方法吗?
最简单的方法,即使它很丑陋,也是在超类中拥有一个包含类名的字段。这就是为什么我做了这个丑陋的解决方案。
最终,我想创建一个基于行程的 jxpath 查询返回一个迭代器,该迭代器是任何深度的 BaseDomain 实例,而不取决于节点位于对象树中的哪个分支,只要我能获取我正在寻找的对象的类名。
有谁知道是否可以通过 jxpath-query 实现这一目标?
欢迎和赞赏代码示例、博客链接或其他文档。
和以前一样,我非常感谢任何帮助。