Java Jaxb2Marshaller和属性
我在使用Jaxb2Marshaller解组XML属性(基本类型)时遇到问题。 以下是示例:Java Jaxb2Marshaller和属性,java,spring,xml-serialization,jaxb,Java,Spring,Xml Serialization,Jaxb,我在使用Jaxb2Marshaller解组XML属性(基本类型)时遇到问题。 以下是示例: <?xml version="1.0" encoding="UTF-8"?> <request xmlns="..."> <items> <item id="1"/> <item id="2"/> <item id="3"/> </items> </re
<?xml version="1.0" encoding="UTF-8"?>
<request xmlns="...">
<items>
<item id="1"/>
<item id="2"/>
<item id="3"/>
</items>
</request>
实体类是:
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlRootElement(name = "request", namespace = "...")
@XmlType(name = "Request", namespace = "...")
public class Request {
private List<Item> _items;
@XmlElementWrapper(name = "items", namespace = "...")
@XmlElement(name = "item", namespace = "...")
public List<Item> getItems() {
return _items;
}
public void setItems(List<Item> items) {
_items= items;
}
@XmlType(name = "Item", namespace = "...")
public static class Item {
private Long _id;
@XmlAttribute(name = "id", namespace = "...")
public Long getId() {
return _id;
}
public void setId(Long id) {
_id = id;
}
}
}
@xmlacessortype(xmlacesstype.PROPERTY)
@XmlRootElement(name=“request”,namespace=“…”)
@XmlType(name=“Request”,namespace=“…”)
公共类请求{
私人物品清单;
@XmlElementWrapper(name=“items”,namespace=“…”)
@XmlElement(name=“item”,namespace=“…”)
公共列表getItems(){
退货(物品);;
}
公共无效集合项(列表项){
_项目=项目;
}
@XmlType(name=“Item”,namespace=“…”)
公共静态类项{
私人长id;
@XmlAttribute(name=“id”,namespace=“…”)
公共长getId(){
返回_id;
}
公共无效集合id(长id){
_id=id;
}
}
}
解组后,我有request.getItems().iterator().next().getId()==null,而它应该是1。如果我使用嵌套元素而不是属性,那么一切都很好。如何修复它?我不想为所有基本Java类型编写一批XMLAdapter。默认情况下,XML中的属性不符合其父元素的名称空间。所以
<item id="3" xmlns="foo"/>
@XmlAttribute(name = "id")
public Long getId() {
return _id;
}