其中有一个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。我应该更改什么才能正确执行转换?
问题是我不想将资源标签包装到资源标签