如何使用jxpath获取列表中对象数组的第一个元素?

时间:2011-05-27 13:48:17

标签: java jxpath

List alma = new ArrayList();
alma.add(new Object[] { "alma", "korte" });
alma.add(new Object[] { "alma2", "korte2" });
alma.add(new Object[] { "alma3", "korte3" });
JXPathContext context = JXPathContext.newContext(alma);
List result = context.selectNodes("????????");
System.out.println(result);

基本上我应该在问号的位置写什么来看到以下输出:

[alma,alma2,alma3]

2 个答案:

答案 0 :(得分:1)

我不认为这是可能的。您需要将数据放在某种容器对象中。例如,

public class AlmaContainer {
  List<AlmaObject> alma = new ArrayList<AlmaObject>();
}

public class AlmaObject {
  String name;
  String value;
  AlmaObject(name, value) {
     this.name=name
     this.value= value
  }
}

然后您可以使用以下表达式:

context.selectNodes("alma/@name");

答案 1 :(得分:0)

这很奇怪,但是如果你不能改变你的初始结构,你可以分两步完成:

Iterator<Object> iter = context.iterate(".");
while(iter.hasNext()){
    Object o=iter.next();
    JXPathContext context2 = JXPathContext.newContext(o);
    System.out.println(context2.getValue(".[1]"));
}

输出:

alma
alma2
alma3