我有几个域类都继承了一个BaseDomain类。jXPath超类中的quering属性
在这个BaseDomain类中,我有一个字段是public final String name;
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的对象实例中获取字段“name”的值,但不能。我可以访问“ID”字段,但不能访问“名称”字段。
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获取“name”的值?
该代码可能有一些语法错误和/或其他错误。我希望你们都明白并理解我的问题。
欢迎任何帮助或指针。
第一个:我想感谢凯利S.法语的快速重播。这让我意识到,我必须解释一些。
我想使用jxpath,因为我最终会进行更深入的搜索。例如:Trip可能包含一个Locations列表,它也扩展了BaseDomain。每个位置可以包含一个扩展BaseDomain的PointOfInterest列表。
在我想根据(class.getCanonicalName()),其类型对象树不是基于XML来能够得到BaseDomain列表代码的其他部分
通过反射,它是纯POJO。
就我所知,没有办法根据它们的类型,类名等来编写jxpath查询来查找对象列表。
这是正确的吗? 有人知道一种方法吗?
最简单的方法,即使它很丑,也是在超类中有一个包含类名的字段。这就是为什么我做了这个丑陋的解决方案。
最后,我想创建一个基于行程的jxpath查询返回一个迭代器,该对象是任何深度的BaseDomain实例,而不依赖于该节点所在的对象树中的哪个分支,作为只要我可以得到我要找的对象的类名即可。
是否有人知道是否有可能通过jxpath查询来实现这一点?
代码示例,链接到博客或其他文档,欢迎和赞赏。
和以前一样,我非常感谢任何帮助。
感谢您的回复。 我会尝试trip.super解决方案。 你知道在jxpath-query中有没有使用.super的方法? – 2013-02-12 20:59:46
很抱歉,.super解决方案无效。 在编译之前会导致错误,指出“行程无法解析为某种类型”。 – 2013-02-13 07:32:39