eBay の LMS (Large Merchant Services) を使用していますが、エラーが発生し続けています。
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>
違いは、 の XML 名前空間属性ですAddFixedPriceItemRequest
。現在、私の XML はすべて JAXB を介してマーシャリングされていますが、ファイル内の別の要素に 2 番目の xmlns 属性を追加する最善の方法がわかりません。
それが質問です。JAXB の別の要素に xmlns 属性を追加するにはどうすればよいですか?
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
これがクラスのスニペットです。for にanamespace="urn:ebay:apis:eBLBaseComponents"
を投げてみましたが、何もしませんでした。@XmlElement
AddFixedPriceItemRequest
@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;