Я пытаюсь десериализовать комплекс XML без удачи. Я пробовал пустые конструкторы, @JvmOverloads и оба @field:Element и @param:Element. XML выглядит следующим образом:
@JvmOverloads
@field:Element
@param:Element
<VAST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="3.0"> <Ad> <InLine> <AdSystem version="1.0.0">Test</AdSystem> <AdTitle>Christmas Tree</AdTitle> <Impression>https://ads-stage.example.com/api/analytics?e=1_RqFiTrUOqZSqfUxTieiSlf-Odd-9SOJ56d5SCNhIPd2zOnKEEJim7NZJ9GjZg0VbS1ffts_25_ejFjbHj6PQ</Impression> <Creatives> <Creative> <Linear skipoffset="00:00:00"> <Duration>00:00:35</Duration> <TrackingEvents> <Tracking event="skip">https://ads-stage.example.com/api/analytics?e=8NzwposCnrRU5VbgQpzBj51dU-JDLR5ls5UCsXygvSaguIKTPUnNw_It36n_ebGwnP-BcigvaMSQAf4AE9z7zg</Tracking> <Tracking event="start">https://ads-stage.example.com/api/analytics?e=JVQorT6YWuKbPzrfjTicBrICvVas2Y0HPq4oyxg7mmjhxQkDJwm-jtt0Ab0mJyYEvJtcGBbwsNPxbR7mM7Kfrg</Tracking> <Tracking event="complete">https://ads-stage.example.com/api/analytics?e=aGCJ4AoScMYOMCAra8dRGz9Cfx7USlfLUUbBaSbgCBXmN8AH5eFCOFZeBWq_EcK3bcXGH1pFD-UnqQentKax2w</Tracking> </TrackingEvents> <MediaFiles> <MediaFile delivery="streaming" width="1280" height="720">https://ads-stage.example.com/media/b7c0/b324/0e23e1a980dae0471eb221a6/m.m3u8</MediaFile> </MediaFiles> </Linear> </Creative> </Creatives> </InLine> </Ad> </VAST>
А основными kotlin классами являются:
AdResponse
@Root(name = "VAST", strict = false) data class AdResponse( @field:Element(name = "Ad") @param:Element(name = "Ad") var Ad: Ad )
Объявление
@Root(name = "Ad", strict = false) data class Ad( @field:Element(name = "Inline") @param:Element(name = "Inline") var inline: Inline )
Встроенный
@Root(name = "Inline", strict = false) data class Inline( @field:Element(name = "AdTitle") @param:Element(name = "AdTitle") var adTitle: String )
Это тип VAST xml, поэтому я также могу использовать его из Google: https://developers.google.com/interactive-media-ads/docs/sdks/android/ но в настоящее время мне нужен способ десериализации XML для общего использования в приложении.