jxPath基于Map中的值从列表中获取对象

时间:2013-09-10 15:12:41

标签: java jxpath

所以我有一个像下面这样的对象结构:

我有一个Person对象,其中包含一个Friends列表(在Person中名为friends)   - 那个朋友列表有一个地图(命名信息)   - 地图的密钥为'age',值为字符串

所以我希望找一位朋友的年龄等于20岁的朋友。

public class Person {
    private List<Friend> friends;

    public List<Friend> getFriends() {
        return friends;
    }

    public void setFriends(List<Friend> friends) {
        this.friends = friends;
    }
}


public class Friend {
    private Map<String, Object> information;

    public Map<String, Object> getInformation() {
        return information;
    }

    public void setInformation(Map<String, Object> information) {
        this.information = information;
    }
}

以下是我的想法,但无法让它工作,请告诉我,如果我错过了什么

Friend match = (Friend)JXPathContext.newContext(personInput).getValue("friends/information[@name='age' = '20']//friend"); 

1 个答案:

答案 0 :(得分:0)

您需要选择“朋友”链接下的所有对象,这些对象的信息图包含“年龄”等于20.然后您只需要第一个结果。

Friend match = (Friend)JXPathContext.newContext(personInput).getValue("friends[information/age = '20'][1]");