我正在使用JXPathContext使用XPath搜索Java对象。我有以下代码。班级部门有员工集合。
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,然后第二次调用Accounts。第二次通话后返回的列表将包含来自帐户和人力资源部门的员工。
答案 0 :(得分:0)
您的XPath正在选择所有公司所有部门中具有指定名称的部门的所有员工。它将在所有搜索中执行此操作,而不仅仅是以后的搜索。仅选择指定部门内的员工:
"/company/department[name ='" + departmentName + "']/employee"
您可能还需要公司名称的谓词,但我不知道您的xml是什么样的,所以我不能就此提出建议。