我在为以下XML创建Java类时遇到了麻烦:
<Users>
<User id="1">
<Name>Test</Name>
</User>
<User id="2">
<Name>Test2</Name>
</User>
</Users>
我正在使用Jaxb(javax.xml)和 Users 类,其中包含用户对象的地图(Map表示String是用户ID)。在此示例中,用户包含ID和名称,其中Id是用户元素的属性,Id是用户中的元素。
我查看了some examples,但所有示例和指南都侧重于围绕用户的根元素(见下文)。
<Database>
<Users>
<User id="1">
<Name>Test</Name>
</User>
<User id="2">
<Name>Test2</Name>
</User>
</Users>
</Database>
是否可以删除根元素数据库,只有用户,其中包含许多用户元素?
答案 0 :(得分:0)
适配器将在具有List的用户(JAXB可以处理的用户)和带有Map的UsersMap之间进行转换,但是必须为某个字段进行操作 - 因此围绕用户的附加级别。
您可以(稍加努力)在您的班级中保存地图和列表,让JAXB在列表中工作。在编组之前和解组之后,需要调用转换方法,但应用程序可以使用地图。
@XmlRootElement(name="Users")
@XmlAccessorType(XmlAccessType.FieLD)
public class Users {
@XmlElement( name = "user", required = true )
private List<User> user = ...
public List<User> getUser(){...}
@XmlTransient
private Map<Integer,User> id2user = ...
public void putUser( User user ){ ... }
public User getUser( Integer is ){ ... }
public void map2list(){...}
public void list2map(){...}
}