Java 尝试将XML映射到POJO时出现“意外元素”
我试图使用JAXB将下面的XML映射到POJO,以便使用XML中的数据,但是,我得到以下错误:Java 尝试将XML映射到POJO时出现“意外元素”,java,xml,jaxb,Java,Xml,Jaxb,我试图使用JAXB将下面的XML映射到POJO,以便使用XML中的数据,但是,我得到以下错误: ! javax.xml.bind.UnmarshalException: unexpected element (uri:"http://webservices.amazon.com/AWSECommerceService/2011-08-01", local:"ItemSearchResponse"). Expected elements are <{}ItemSearchResponse
! javax.xml.bind.UnmarshalException: unexpected element
(uri:"http://webservices.amazon.com/AWSECommerceService/2011-08-01",
local:"ItemSearchResponse"). Expected elements are <{}ItemSearchResponse>
项目
项目属性
问题
如何解决错误?我的POJO设置是否不正确?如果是,我应该如何重新构建POJO
xml中有多个作者。如何将它们映射到数组或排序列表
您需要使用包级别@XmlSchema注释来映射模型的名称空间限定 package-info.java 更多信息
伟大的这很有效。你也能回答第二个问题吗。由于有多个标记,如何将它们全部放入一个数组或List@Ethan-如果有多个Author元素,则只需创建属性列表。
<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
<Items>
<Item>
<ASIN>B001DJLCRC</ASIN>
<DetailPageURL>
http://www.amazon.com/Breaking-Bad-Complete-First-Season/dp/B001DJLCRC%3FSubscriptionId%3DAKIAJ6JZ43XIWIUIIQLA%26tag%3Dsample026-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB001DJLCRC
</DetailPageURL>
<ItemLinks>
<ItemLink>
<Description>Technical Details</Description>
<URL>
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
</URL>
</ItemLink>
</ItemLinks>
<ItemAttributes>
<Actor>Bryan Cranston</Actor>
<Actor>Aaron Paul</Actor>
<Manufacturer>Sony Pictures Home Entertainment</Manufacturer>
<ProductGroup>DVD</ProductGroup>
<Title>Breaking Bad: The Complete First Season</Title>
</ItemAttributes>
</Item>
</Items>
</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<Item> 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;
}
@XmlSchema(
namespace = "http://www.example.org/package",
elementFormDefault = XmlNsForm.QUALIFIED)
package example;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;