javax.xml.绑定(bind).UnmarshalException : unexpected element (uri :""

标签 java xml jaxb unmarshalling

我在将 XML 响应从服务转换为 POJO 时遇到异常。 XML 如下所示:

这是我的 XML response .

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

我是这样使用它的:

 Document response = getResponse(url);
 JAXBContext context = JAXBContext.newInstance(AmazonItem.class);
 Unmarshaller unMarshaller = context.createUnmarshaller();
 newItem = (AmazonItem) unMarshaller.unmarshal(response);

下面是我的文件的详细信息

package-info.java

@XmlSchema(
        namespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01",
        elementFormDefault = XmlNsForm.QUALIFIED)

package com.services.amazon;


import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;

AmazonItem.java

@XmlRootElement(name="ItemSearchResponse")
@XmlAccessorType(XmlAccessType.FIELD)
public class AmazonItem
{
    @XmlElement(name="Items")
    private Items items = null;
}

Items.java

@XmlAccessorType(XmlAccessType.FIELD)
public class Items { 
    @XmlElement(name="Item")
    List<Item> items = new ArrayList();
}

Item.java

@XmlAccessorType(XmlAccessType.FIELD)
public class Item {
    @XmlElement(name="ASIN")
    private String asin;

    @XmlElement(name="ItemAttributes")
    private ItemAttributes attributes;

    @XmlElement(name="ItemLinks")
    private List<ItemLinks> itemLinks;
}

ItemAttributes.java

@XmlAccessorType(XmlAccessType.FIELD)
public class ItemAttributes {
    @XmlElement(name="Title")
    private String title;

    @XmlElement(name="Actor")
    private List<String> actor;

    @XmlElement(name="ProductGroup")
    private String productGroup;
}

ItemLink.java

@XmlAccessorType(XmlAccessType.FIELD)
public class ItemLink {
    @XmlElement(name="Description")
    private String description;

    @XmlElement(name="URL")
    private String url;
}

ItemLinks.java

@XmlAccessorType(XmlAccessType.FIELD)
public class ItemLinks {
    @XmlElement(name="ItemLink")
    List<ItemLink> itemLinks;
}

最佳答案

错误消息是说您正在获取如下所示的 XML 文档:

<ItemSearchResponse>

而不是像下面这样匹配您映射的命名空间限定的:

<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">

关于javax.xml.绑定(bind).UnmarshalException : unexpected element (uri :"",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22360943/

相关文章:

xml - 在 SVG 中对齐文本

java - 包级别的 XmlJavaTypeAdapter 不起作用

java - JAXB 与 Ant : How to make XJCTask respect <depends>

C#如何读取节点xml中的单个项目

java - 如何使用 JAXB 解码 XMLGregorianCalendar?

java - 如何添加 Java 8+。在android项目中使用Maven构建

java - 动态线程池

java - 可以从java中的另一个类调用类的main()方法吗

java - Wildfly 有一个在后台运行的持续运行的进程

xml - 在 R XML Xpath 中,@href 返回文本 "href"