当前位置: 首页 > 面试题库 >

尝试将XML映射到POJO时出现“意外元素”

吕成业
2023-03-14
问题内容

我正在尝试使用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>

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 / setter从问题中跳过)

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?

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


问题答案:

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

包信息.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反序列化为Java Pojo,但我不需要所有元素,并且我希望避免创建样板包装类来获取一些子元素 例如-->现在不起作用

  • 基本上,我需要获取字符串形式的数据(与问题无关),并通过jQuery将其追加到JavaFx WebView中。在此链接中,我找到了如何嵌入Jquery并将Jquery函数调用到WebView:https://community.oracle.com/message/10446280?tstart=1.' 线程“JavaFX应用程序线程”中出现异常

  • 我正在使用Jackson的XML绑定,通过到Java POJO的初始映射,将XML转换为Java列表。我所写的作品,但我不认为我使用杰克逊正确。 这实际上是工作,因为我需要它的工作。我得到了一个Groups类,其中有一个用我期望的元素填充的列表。我在想,方法是正确的吗?我不喜欢我有一个二传手做一个添加,但我所尝试的一切都不起作用。

  • 我使用JAVA jackson将JSON映射到JAVA pojo对象,我的JSON文件是: 在之后,我收到了以下错误消息: 不能反序列化出START_ARRAY令牌 我的POJO课程: 请问,这种JSON格式的正确java POJO是什么?谢谢

  • 因此,我尝试使用coinbase API。我正在尝试一个简单的测试,看看我是否可以让它工作,但我得到了各种作曲家的错误。 目前,我得到意外的t'use'为这个代码: 那么,我的使用声明在错误的地方吗?我在索引函数和类之外尝试过它们。两者产生的结果与此完全不同。 在Keks班之外,我得到了 致命错误:在第15行的/home/content/61/11420661/html/beta/applicat

  • 我正在尝试使用Jackson将JSON映射到POJO。但是,由于此JSON包含对象的嵌套映射,当我将其反序列化到POJO时,timeseries信息不会转换为POJO。我只能在timeseries块中获取元数据部分和日期部分。timeseries块中的其他字段(如open、high和low)始终为空。 Jackson似乎无法将TimeSeries类中的字段与匹配。有人能告诉我该怎么做,或者给我指出