一些根对象有 field MyCollection myCollection
。该类MyCollection
实现Collection
接口。元素的名称可以通过调用获得someService().getName()
,这就是我创建Rules
类的原因。
context.getValue("/myCollection");
返回 myCollection - 好的
context.getValue("//myCollection");
返回 myCollection - 好的
context.getValue("/myCollection/.[rules:getName() = 'secondName']");
返回返回“secondName”IMyNode
的
实例- OKsomeService().getName()
行后
context.getValue("/myCollection//.[rules:getName() = 'secondName']");
不执行下一行。也不例外,并且没有设置宽松模式。我不明白发生了什么事。第 8 行的Rules
类打印"POINTER SET ON /myCollection[1]"
。我想在这个例子中得到的元素是 in /myCollection[2]
。
这是获取元素名称的地方。我认为这堂课是正确的。
public class Rules {
public static String getName(ExpressionContext context){
Pointer pointer = context.getContextNodePointer();
if(pointer == null){
return "";
} else {
if(pointer.getValue() instanceof IMyNode){
System.out.println("POINTER SET ON " + pointer);
IMyNode node = (IMyNode)pointer.getValue();
return node.someService().getName();
}
}
return "";
}
}
编辑: 这个问题是关于JXPath的。我添加标签 xpath 而不是 jxpath 是错误的。