org.simpleframework. xml .core.ValueRequiredException: Невозможно удовлетворить @ org.simpleframework. xml .Element - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь десериализовать комплекс XML без удачи. Я пробовал пустые конструкторы, @JvmOverloads и оба @field:Element и @param:Element. XML выглядит следующим образом:

<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 для общего использования в приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...