Проблема SimpleXML с ElementException - не соответствует

Входной XML:

<DeviceInfo dpId="..." rdsId="..." rdsVer="..." dc="..." mi="..." mc="...">
<additional_info>
<Param name="..." value="..." />
<Param name="..." value="..." />
</additional_info>
</DeviceInfo>

Информация об устройстве

@Root(name="DeviceInfo")
public class DeviceInfo {

        // Mandatory
        @Attribute(name="dpId")
        public String DpId;
        @Attribute(name="rdsId")
        public String RdsId;
        @Attribute(name="rdsVer")
        public String RdsVer;
        @Attribute(name="dc")
        public String Dc;
        @Attribute(name="mi")
        public String Mi;
        @Attribute(name="mc")
        public String Mc;

        @Element (name="additional_info")
        public AdditionalInfo AdditionalInfo;

        // Constructor
        // ...
        // Getter & Setter
        // ...

        public static class AdditionalInfo
        {
            @ElementList(name="Param",entry="Parameters", inline = true)
            public List<DeviceInfoParam> Parameters;

            AdditionalInfo()
            {
            }
        }

        public static class DeviceInfoParam
        {
            @Attribute(name="name")
            public String Name;
            @Attribute(name="value")
            public String Value;

            DeviceInfoParam()
            {
            }
        }

}

Проблема: W/System.err: org.simpleframework.xml.core.ElementException: Элемент «Param» не имеет соответствия в классе x.x.entities.DeviceInfo$AdditionalInfo в строке 3

Вопрос: Чего не хватает в сущности (я не могу изменить XML!)? Я уже пробовал всевозможные варианты, включая элемент вместо списка элементов, добавление записи, встроенный и т. Д.


person Nils    schedule 13.03.2018    source источник
comment
И где запись Parameters в вашем xml? Я никогда не использовал эту библиотеку, но я бы сделал очевидную вещь... Удалите AdditionalInfo вообще, вместо этого я бы поместил список непосредственно в информацию об устройстве с entry=additional_info   -  person Selvin    schedule 13.03.2018
comment
Или, скорее, entry=Param и name=additional_info   -  person Selvin    schedule 13.03.2018
comment
это была лишь одна из многих попыток... запись может быть удалена... никаких изменений... фактическое имя поля - param, как в xml   -  person Nils    schedule 13.03.2018


Ответы (1)


в вашей аннотации вам нужно добавить required = false. Это позволяет пропустить его, если совпадений нет. Например:

@ElementList(name="Param",entry="Parameters", inline = true, required = false)
        public List<DeviceInfoParam> Parameters;
person NaturallyAsh    schedule 20.03.2019