Как получить первые элементы массивов объектов в списке с помощью 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 ответа
Решение
Я не думаю, что это возможно. Вы должны поместить свои данные в какой-то объект-контейнер. Например,
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");
Это странно, но если вы не можете изменить свою первоначальную структуру, вы можете сделать это в 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