gpt4 book ai didi

java - 如何使用 JAXB 将 XML 转换为对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:32 27 4
gpt4 key购买 nike

我的客户正在使用 DropWizard/Jersey。

我收到了 xml 格式的回复。它看起来像这样:

enter image description here

我创建了一个名为 package-info.java 的文件,内容如下:

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

package com.aerstone.services.core.handlerpojos.amazon;


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

最后,我有一个看起来像这样的 POJO。现在我只是尝试映射标题和 ASIN。

@XmlRootElement(name="ItemSearchResponse")
public class AmazonItem
{
private String name;
private String asin;

public AmazonItem(){}

@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlElement(name="Title")
public String getName()
{
return name;
}
public void setName(String name){this.name = name;}

@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlElement(name="ASIN")
public String getAsin(){ return asin;}

public void setAsin(String asin){ this.asin = asin; }
}

我是这样使用它的:

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

但是我收到了这个错误:

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

最佳答案

您正在尝试解码以以下内容开头的文档:

<ItemLookupRespons>

而不是您在问题中以以下内容开头的 XML 文档:

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

如果您从 XML 模式创建 JAXB 模型,其中您尝试解码的文档是有效的,那么您应该在生成模型的包名称或 ObjectFactory 生成的类,用于引入模型的所有类。

关于java - 如何使用 JAXB 将 XML 转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22208342/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com