“意外元素”在尝试将XML映射到POJO时 [英] "unexpected element" while trying to map XML to POJOs

查看:77
本文介绍了“意外元素”在尝试将XML映射到POJO时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用JAXB将以下XML映射到POJO,以便我可以使用XML中的数据,但是,我收到以下错误:

I am trying to map the below XML to POJOs using JAXB so that I can use the data in the XML, however, I'm getting the error below:

! javax.xml.bind.UnmarshalException: unexpected element 
(uri:"http://webservices.amazon.com/AWSECommerceService/2011-08-01", 
local:"ItemSearchResponse"). Expected elements are <{}ItemSearchResponse>

XML:

<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>

我的POJO(getter / setters故意被忽略)

My POJOs (getter/setters are skipped from question on purpose)

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

问题


  • 如何解决错误?我的POJO设置不正确吗?如果是这样,我应该如何重组POJO?

  • How can I resolve the error? Are my POJOs not setup correct? If so, how should I re-structure the POJOs?

xml中有多个作者。如何将它们映射到数组或排序列表。

There are multiple Author in the xml. How can I map them to an Array or list of sort.

推荐答案

您需要使用包级别 @XmlSchema 注释,用于映射模型的命名空间限定。

You need to use the package level @XmlSchema annotation to map the namespace qualification for your model.

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;

更多信息

  • http://blog.bdoughan.com/2010/08/jaxb-namespaces.html

这篇关于“意外元素”在尝试将XML映射到POJO时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆