我正在使用 eBay 的 LMS(大型商家服务)并不断遇到错误:
org.xml.sax.SAXException: SimpleDeserializer 在 尝试反序列化的过程中
遇到了一个子
元素,这不是预期的 。
经过大量的反复试验,我找到了问题所在。事实证明这是有效的:
<?xml version="1.0" encoding="UTF-8"?>
<BulkDataExchangeRequests xmlns="urn:ebay:apis:eBLBaseComponents">
<Header>
<Version>583</Version>
<SiteID>0</SiteID>
</Header>
<AddFixedPriceItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
虽然这个(我一直在发送的)没有:
<?xml version="1.0" encoding="UTF-8"?>
<BulkDataExchangeRequests xmlns="urn:ebay:apis:eBLBaseComponents">
<Header>
<Version>583</Version>
<SiteID>0</SiteID>
</Header>
<AddFixedPriceItemRequest>
不同之处在于AddFixedPriceItemRequest
. 我所有的 XML 目前都通过 JAXB 进行编组,我不确定将第二个 xmlns 属性添加到文件中的不同元素的最佳方法是什么。
这就是问题所在。如何将 xmlns 属性添加到 JAXB 中的另一个元素?
package ebay.apis.eblbasecomponents;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "AddFixedPriceItemRequestType", propOrder = {
"item"
})
public class AddFixedPriceItemRequestType
extends AbstractRequestType
{
@XmlElement(name = "Item")
protected ItemType item;
public ItemType getItem() {
return item;
}
public void setItem(ItemType value) {
this.item = value;
}
}
按要求添加了类定义。
像这样编辑上面的类没有效果:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(namespace = "urn:ebay:apis:eBLBaseComponents",
name = "AddFixedPriceItemRequestType", propOrder = {
"item"
})
public class AddFixedPriceItemRequestType
这是该BulkDataExchangeRequestsType
课程的一个片段。我尝试将 anamespace="urn:ebay:apis:eBLBaseComponents"
放入@XmlElement
forAddFixedPriceItemRequest
但它没有做任何事情。
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "BulkDataExchangeRequestsType", propOrder = {
"header",
"addFixedPriceItemRequest"
})
public class BulkDataExchangeRequestsType {
@XmlElement(name = "Header")
protected MerchantDataRequestHeaderType header;
@XmlElement(name = "AddFixedPriceItemRequest")
protected List<AddFixedPriceItemRequestType> addFixedPriceItemRequest;