Получить GCal: цвет из Google api для java?

#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;