#java #android #google-api #google-api-java-client
#java #Android #google-api #google-api-java-client
Вопрос:
Я пытаюсь получить <gCal:color value="xxxxxx">
атрибут value из ответа Atom XML в google-api-java-client на Android. По какой-то причине он не анализируется, несмотря на то, что для него определен @Key. Я вижу, что это отображается в фактическом XML-ответе, но он не анализируется в pojo должным образом.
Рассмотрим эти фрагменты кода, которые я изменил…
Я добавил пространство имен GCal:
AtomParser parser = new AtomParser();
parser.namespaceDictionary = Util.DICTIONARY;
parser.namespaceDictionary.set("gCal", "http://schemas.google.com/gCal/2005"); // I added this.
Я добавил ключ GCal: color в класс CalendarEntry:
@Key("gCal:color/@value")
public String color;
Когда я читаю результирующий CalendarEntry, строка «color» по-прежнему равна нулю.
Ошибок во время выполнения не возникает. Небольшое изменение, например «GCal: colors», приведет к ошибочному запросу HTTP 400. Я смог добавить @Key («id»), который отлично работает, но ничего из GCal не возвращается.
Мысли?
Ответ №1:
Решено…
Мне пришлось вытаскивать gCal:color
и @value
отдельно, а не одним махом с XPath .. тьфу! время, потраченное впустую на глупое дерьмо, но это нормально..
Итак, я создал класс под названием ColorNode с помощью одного ключа:
public class ColorNode
{
@Key("@value")
public String color;
}
И тогда класс CalendarEntry будет иметь ключ для ColorNode:
@Key("gCal:color")
public ColorNode colorNode;