JXPath getValue结果也包括先前搜索的结果

时间:2013-08-02 00:03:56

标签: java xml xpath jxpath

我正在使用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。第二次通话后返回的列表将包含来自帐户和人力资源部门的员工。

1 个答案:

答案 0 :(得分:0)

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

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

您可能还需要公司名称的谓词,但我不知道您的xml是什么样的,所以我不能就此提出建议。