Как получить первые элементы массивов объектов в списке с помощью jxpath? - PullRequest
0 голосов
/ 27 мая 2011
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 ]

1 голос
/ 27 мая 2011

Я не думаю, что это возможно.Вы должны поместить свои данные в какой-то объект-контейнер.Например,

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");
0 голосов
/ 21 января 2014

Это странно, но если вы не можете изменить исходную структуру, вы можете сделать это в 2 шага:

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
...