Мы создали систему для обработки каналов Amazon для самых разных клиентов. Это работает для многих клиентов, и мы успешно обрабатывались каналы, как это:Обработка Amazon MWS Ответы на подачу
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
<Header>
<DocumentVersion>1.02</DocumentVersion>
<MerchantIdentifier>REDACTED_8055</MerchantIdentifier>
</Header>
<MessageType>ProcessingReport</MessageType>
<Message>
<MessageID>1</MessageID>
<ProcessingReport>
<DocumentTransactionID>1016539</DocumentTransactionID>
<StatusCode>Complete</StatusCode>
<ProcessingSummary>
<MessagesProcessed>218</MessagesProcessed>
<MessagesSuccessful>218</MessagesSuccessful>
<MessagesWithError>0</MessagesWithError>
<MessagesWithWarning>0</MessagesWithWarning>
</ProcessingSummary>
</ProcessingReport>
</Message>
</AmazonEnvelope>
Однако один клиент получает обратно ответ корма, как это:
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
<Header>
<DocumentVersion>3.00</DocumentVersion>
<MerchantIdentifier>REDACTED_43183</MerchantIdentifier>
</Header>
<MessageType>ProcessingReport</MessageType>
<Message>
<MessageID>1</MessageID>
<ProcessingReport>
<ProcessingReportType>Inventory</ProcessingReportType>
<DocumentTransactionID>10460738</DocumentTransactionID>
<Summary MarketplaceName="All">
<StatusCode>Complete</StatusCode>
<ProcessingSummary>
<MessagesProcessed>1</MessagesProcessed>
<MessagesSuccessful>1</MessagesSuccessful>
<MessagesWithError>0</MessagesWithError>
<MessagesWithWarning>0</MessagesWithWarning>
</ProcessingSummary>
</Summary>
</ProcessingReport>
</Message>
</AmazonEnvelope>
который не безуспешно распаковать. Обратите внимание на незначительные отличия: DocumentVersion отличается, а обработкаSummary встроена в тег Summary, который схема не ожидает. Последний убивает процесс Unmarshalling JAXB. Я не могу найти документацию о том, почему это происходит, и надеялся, что кто-то здесь столкнулся с этим раньше.
Я не могу даже сказать JAXB игнорировать неизвестные элементы, потому что мне нужен ProcessingSummary, и он похоронен под странным тегом «Сводка».
Кто-нибудь знает, почему один клиент получит один ответ на подачу, а другой получит другой?
Итак, каков ваш вопрос, точно? Почему Amazon предоставляет другой XML для одного из клиентов? Совершенно очевидно, что это совсем другая схема, поэтому ни один сюрприз JAXB не может развязать 3.00 с 1.02 классами. – lexicore
Да, мой вопрос: «Почему Amazon предоставляет разные XML для разных клиентов?» Я отредактирую вопрос, чтобы это отразить. – IcedDante