我使用XPath来使用JXPathContext搜索整个Java对象。我有以下代码。类部门有一个employees集合。
public List<Employee> getEmployeesByDepartment(String departmentName, Company company){
JXPathContext context = JXPathContext.newContext(company);
context.setLenient(true);
@SuppressWarnings("unchecked")
List<Employee> employees = (List<Employee>) context
.getValue("/company[department/name ='"+departmentName+"']/department/employee");
return employees;
}例如,我第一次呼叫HR部门,然后第二次呼叫Account。第二次调用后返回的列表将包含来自Accounts和HR部门的员工。
发布于 2013-08-02 17:59:41
您的XPath正在选择所有公司中具有指定名称的部门的所有部门的所有员工。它将在所有搜索中执行此操作,而不仅仅是以后的搜索。要仅选择指定部门内的员工,请执行以下操作:
"/company/department[name ='" + departmentName + "']/employee"您可能还需要公司名称的谓词,但是我不知道您的xml是什么样子的,所以我不能建议您这样做。
https://stackoverflow.com/questions/18006667
复制相似问题