尝试将XML映射到POJO时出现“意外元素”
我正在尝试使用JAXB将下面的XML映射到POJO,以便我可以使用XML中的数据,但是,我收到以下错误:
! javax.xml.bind.UnmarshalException: unexpected element (uri:"http://webservices.amazon.com/AWSECommerceService/2011-08-01", local:"ItemSearchResponse"). Expected elements are
XML:
B001DJLCRC http://www.amazon.com/Breaking-Bad-Complete-First-Season/dp/B001DJLCRC%3FSubscriptionId%3DAKIAJ6JZ43XIWIUIIQLA%26tag%3Dsample026-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB001DJLCRC Technical Details http://www.amazon.com/Breaking-Bad-Complete-First-Season/dp/tech-data/B001DJLCRC%3FSubscriptionId%3DAKIAJ6JZ43XIWIUIIQLA%26tag%3Dsample026-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB001DJLCRC Bryan Cranston Aaron Paul Sony Pictures Home Entertainment DVD Breaking Bad: The Complete First Season
我的POJO(getter / setters故意被忽略)
ItemSearchResponse
@XmlRootElement(name="ItemSearchResponse") @XmlAccessorType(XmlAccessType.FIELD) public class ItemSearchResponse { @XmlElement(name="Items") private Items items = null; }
项目
@XmlAccessorType(XmlAccessType.FIELD) public class Items { @XmlElement(name="Item") List items = new ArrayList(); }
项目
@XmlAccessorType(XmlAccessType.FIELD) public class Item { @XmlElement(name="ASIN") private String asin; @XmlElement(name="ItemAttributes") private ItemAttributes attributes; }
物品属性
@XmlAccessorType(XmlAccessType.FIELD) public class ItemAttributes { @XmlElement(name="Title") private String title; @XmlElement(name="Author") private String author; }
问题
-
我该如何解决错误? 我的POJO设置不正确吗? 如果是这样,我应该如何重组POJO?
-
xml中有多个
Author
。 如何将它们映射到数组或排序列表。
您需要使用包级别@XmlSchema
批注来映射模型的命名空间限定。
package-info.java
@XmlSchema( namespace = "http://www.example.org/package", elementFormDefault = XmlNsForm.QUALIFIED) package example; import javax.xml.bind.annotation.XmlNsForm; import javax.xml.bind.annotation.XmlSchema;
了解更多信息