Java Jaxb2Marshaller和属性

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

我在使用Jaxb2Marshaller解组XML属性(基本类型)时遇到问题。 以下是示例:

<?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;
}