Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
#1

Сложный парсинг XML через Retrofit SimpleXml-Converter Simple XML - Android

02.09.2016, 16:32. Просмотров 322. Ответов 0
Метки нет (Все метки)

Разбираюсь потиху, есть 2 вопроса.
1. Нужно ли всегда using Retrofit SimpleXml-Converter Simple XML парсить все элементы?
2. Есть страница http://ufa.farfor.ru/getyml/?key=ukAXxeJYZN. Как мне забрать только текст "340.00 гр" из


XML
1
<param name="Вес">340.00 гр</param>
При попытке парсинга пишет следующую ошибку:
09-02 14:37:13.554 11598-11598/com.example.pavel.lesson8 D/TAG: onFailure: java.lang.RuntimeException: org.simpleframework.xml.core.AttributeException: Attribute 'id' does not have a match in class com.example.pavel.lesson8.models.Offer at line 23

Java
1
2
3
4
5
6
7
8
9
10
@Root(name = "yml_catalog", strict = false)
public class OffersResponse {
    @Path("shop/offers")
    @ElementList(entry = "offer",inline = true)
    private static ArrayList<Offer> offerList;
 
    public ArrayList<Offer> getOfferList() {
        return offerList;
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Root(name = "offer")
public class Offer {
    @Element(required = false, name = "url")
    private String url;
    @Element(required = false, name = "name")
    private String name;
    @Element(required = false, name = "price")
    private String price;
    @Element(required = false, name = "description")
    private String description;
    @Element(required = false, name = "picture")
    private String picture;
    @Element(required = false, name = "categoryId")
    private String categoryId;
    @Element(required = false, name = "param")
    private String param;
}
Добавлено через 17 минут
Итак я не игнорировал текст после <offer .... >

Решение:
Java
1
@Root(name = "offer", strict = false)
Вопрос про Вес остаётся:

.simpleframework.xml.core.PersistenceException: Element 'param' is already used with @org.simpleframework.xml.Element(data=false, name=param, required=false, type=void) on field 'param' private java.lang.String com.example.pavel.lesson8.models.Offer.param at line 39

Добавлено через 1 час 33 минуты
вопрос решился созданием листа параметров:

Java
1
2
 @ElementList(required = false, inline = true)
    private ArrayList<Param> paramList;
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Root(name = "param", strict = false)
public class Param {
    @Attribute(required = false, name = "name")
    public String weight;
    @Text(required = false)
    private String weight_text;
    @Attribute(required = false, name = "Диаметр")
    public String diameter;
    @Attribute(required = false, name = "Каллорийность")
    public String calories;
    @Attribute(required = false, name = "Белки")
    public String protein;
    @Attribute(required = false, name = "Жиры")
    public String fat;
    @Attribute(required = false, name = "Углеводы")
    public String carbohydrate;
    @Attribute(required = false, name = "Кол-во")
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2016, 16:32     Сложный парсинг XML через Retrofit SimpleXml-Converter Simple XML
Посмотрите здесь:

Android Парсинг XML документа по URL
Android Парсинг XML
Парсинг XML Android
Android Парсинг XML на АНДРОИД
Android Парсинг XML
Парсинг XML по URL Android
XML HTTP парсинг Android
Парсинг XML Android
Парсинг xml-файла Android
Android Парсинг большого xml
Android XML Парсинг (yml)
Android Retrofit + simpleXml может у кого есть примеры?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 10:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru