Десериализовать последовательные и динамические элементы с помощью XStream - PullRequest
1 голос
/ 18 мая 2019

Мне нужно десериализовать XML, содержащий динамические и последовательные элементы.

Я использую XStream 1.4.

Есть ли способ преобразовать в общий список с помощью аннотаций? Или мне нужно расширить конвертер?

  • XML

Пример 1:

<entities>
    <entity>
        <f0>RECIFE</f0>
        <f1>13/01/2017 13:58:47</f1>
    </entity>
    <entity>
        <f0>TERESINA</f0>
        <f1>13/01/2018 13:58:47</f1>
    </entity>
</entities>

Пример 2:

<entities>
    <entity>
        <f0>RECIFE</f0>
        <f1>13/01/2017 13:58:47</f1>
        <f2>36ºC</f2>
    </entity>
    <entity>
        <f0>TERESINA</f0>
        <f1>13/01/2018 13:58:47</f1>
        <f2>42ºC</f2>
    </entity>
</entities>
  • Классы
@XStreamAlias("entities")
public class EntitiesResponse {

    @XStreamImplicit(itemFieldName = "entity")
    private List<EntityResponse> entity;

    // getters and setters
}
@XStreamAlias("entity")
@XStreamConverter(value = SerializableConverter.class, strings = {"value"})
public class EntityResponse {

    private Object value;

    // getters and setters   
}
  • выход
Security framework of XStream not initialized, XStream is probably vulnerable.
Exception in thread "main" com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException: No such field com.mycompany.mavenproject1.response.EntityResponse.f0
---- Debugging information ----
message             : No such field com.mycompany.mavenproject1.response.EntityResponse.f0
field               : f0
class               : com.mycompany.mavenproject1.response.EntityResponse
required-type       : com.mycompany.mavenproject1.response.EntityResponse
converter-type      : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path                : /entities/entity/f0
class[1]            : com.mycompany.mavenproject1.response.EntitiesResponse
required-type[1]    : com.mycompany.mavenproject1.response.EntitiesResponse
version             : 1.4.11.1
...