JAXB从列表解组到HashMap

时间:2018-06-26 16:16:00

标签: java xml jaxb

其中有一个xml文件:

b

如您所见,其中的标签可以相互嵌套。嵌套项只是一张一张地列出,它们没有父标记。

目前,使用JAXB将它们转换为List。但是我需要一个HashMap而不是一个列表:

***

<resource>
        <name>commands</name>
        <method>POST</method>
        <permissions mode="blacklist"></permissions>
        <resource>
            <name>login</name>
            <permissions mode="blacklist"></permissions>
        </resource>
        <resource>
            <name>logout</name>
            <permissions>
                <u>$all</u>
                <u>BANNED</u>
            </permissions>
        </resource>
        <resource>
            <name>register</name>
            <permissions>
                <u>GUEST</u>
            </permissions>
        </resource>
        <resource>
            <name>addbook</name>
            <permissions>
                <u>$registered</u>
            </permissions>
        </resource>
        <resource>
            <name>changepassword</name>
            <permissions>
                <u>$registered</u>
            </permissions>
        </resource>
</resource>

***

我写了一个适配器,它通过解组来获取一个列表并返回一个地图,但是它不起作用。

class Resource{
***
    private HashMap<String, Resource> resources;

    @XmlJavaTypeAdapter(ResourcesHashMapAdapter.class)
    @XmlElement(name = "resource")
    public HashMap<String, Resource> getResources() {
        return resources;
    }

    public void setResources(HashMap<String, Resource> resources) {
        this.resources = resources;
    }
***
}

unmarshall()被调用,但是总是得到一个空的LinkedList。我应该更改什么才能正确执行转换?

问题是我不想将资源标签包装到资源标签

0 个答案:

没有答案