0

我正在使用 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。第二次调用后返回的列表将包含来自 Accounts 和 HR 部门的员工。

4

1 回答 1

0

您的 XPath 正在选择具有指定名称的部门的所有公司中所有部门的所有员工。它将在所有搜索中执行此操作,而不仅仅是以后的搜索。仅选择指定部门内的员工:

"/company/department[name ='" + departmentName + "']/employee"

您可能还想要一个关于公司名称的谓词,但我不知道您的 xml 是什么样的,所以我不能就此向您提供建议。

于 2013-08-02T09:59:40.720 回答