Я пытаюсь прочитать конфигурационный файл на Android с помощью Retrofit и SimpleXML.Android SimpleXML Parsing кажется ограниченным в Depth
У меня установлены мои зависимости и действительная схема XML. Простой XML начинает разбирать мой документ, но, когда он достигает определенный тег/глубину он терпит неудачу с ошибкой ниже
Caused by: retrofit.converter.ConversionException: org.simpleframework.xml.core.ElementException: Element 'Host' does not have a match in class
Caused by: org.simpleframework.xml.core.ElementException: Element 'Host' does not have a match in class
части моего XML выглядит следующим образом:
<Config>
...
<Identity>
<Address>
<Host>...</Host>
...
</Address>
...
</Identity>
...
</Config>
Он не разбирает весь вплоть до него достигает тега Host
, который является первым элементом, глубоко вложенным в него. Указанная ошибка обычно указывает на отсутствующую аннотацию, но в этом случае она аннотируется, как и должно быть. Мой отображенный объект выглядит следующим образом:
@Root(name="Config")
public class Config {
@ElementList(entry="Identity", inline=true)
private List<Identity> mIdentities;
@Root(name="Identity")
static class Identity {
@Element(name="Address")
private Address mAddress;
...
}
@Root(name="Address")
static class Address {
@Element(name="Host")
private String mHost;
...
}
}
Есть ли кто-то, кто испытал подобную проблему и имеет представление о том, что проблема может быть? Или SimpleXML ограничен глубиной, которую он может достичь? Может быть, это проблема, связанная с ListElement? Я не могу найти документацию, в которой упоминаются какие-либо проблемы.
Да, все было аннотировано правильно, я дважды проверил и попробовал подклассы как с Элементом, так и с Корнем. Нет ли ограничений по глубине? –
Btw Я обновил свой вопрос с помощью класса сопоставления –
Проверите сериализацию объекта 'Config' (если это возможно), соответствует ли ваш вход или есть ошибки? – ollo