某些根对象具有字段MyCollection myCollection
。类MyCollection
实现Collection
接口。通过调用someService().getName()
可以获得元素的名称,这就是我创建Rules
类的原因。
context.getValue("/myCollection");
返回myCollection - 确定
context.getValue("//myCollection");
返回myCollection - 确定
context.getValue("/myCollection/.[rules:getName() = 'secondName']");
返回IMyNode
返回someService().getName()
的实例
“secondName” - 确定
排队
context.getValue("/myCollection//.[rules:getName() = 'secondName']");
下一行未执行。也没有例外,宽松模式是
没有设置。我不明白发生了什么。
Rules
类的第8行打印"POINTER SET ON /myCollection[1]"
。我希望在此示例中获得的元素位于/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我错了。
答案 0 :(得分:1)
尝试使用*
代替.
。此外,我认为您可以使用标准XPath函数local-name()
而不是rules:getName()
。