Squeak.ru - шаблоны программирования

Разобрать XML из модификации, Android?

У меня есть API, который дает мне ответ в формате SMIL XML. Ниже приведен формат.

<smil xmlns="http://www.w3.org/2005/SMIL21/Language">
<head>
<meta name="refreshToken" content="016c71b0cc1e42fa48d576db495a3b2cc97d0b139add2e8fa0138c10351edcf3e76ac961a554"/>
<meta name="startingBitrate" content="2500000"/>
</head>
<body>
<seq>
<par>
<video src="https://tveuniversalkids-vh.akamaihd.net/i/prod/video/506/607/190719_3991003_Trendy_Accent_Wall_Room_Makeover_anvver_1_,25,40,18,12,7,4,2,00.mp4.csmil/master.m3u8?__b__=1000&amp;hdnea=st=1565274657~exp=1565275587~acl=/i/prod/video/506/607/190719_3991003_Trendy_Accent_Wall_Room_Makeover_anvver_1_*~id=316fb474-072e-4efe-a423-614b81ee181c~hmac=253669d278c128e1a88fb94add2687a2dd79c6d7a727d97964626821efff0ead" 
 title="Trendy Accent Wall Room Makeover" abstract="Sequins and glamour are front and center in a  fashion forward space that sisters Lizzie and Caroline design for each other." dur="410000ms" guid="3991003" categories="Series/Get Out of My Room" keywords="Universal Kids,universalkids,Family Entertainment,YouTube Kids,kids,children,what’s new,Get out of my room,get outta my room,get outta my room tv,get out of my room tv,room makeover,kids room makeover" ratings="urn%3Av-chip:tv-g" provider="Universal Kids" type="application/x-mpegURL" height="720" width="1280" clipBegin="0:00">
    <param name="dayPart" value="Primetime"/>
    <param name="entitlement" value="free"/>
    <param name="externalAdvertiserId" value="UNIVERSALKIDS_ANV_3991003"/>
    <param name="fullEpisode" value="false"/>
    <param name="seasonNumber" value="0"/>
    <param name="show" value="Get Out of My Room"/>
    <param name="advertisingGenre" value="Family and Kids"/>
    <param name="programmingType" value="Undefined"/>
    <param name="trackingData" value="aid=2702430253|b=2621440|bc=NBCU-MPAT|ci=1|cid=1573561923689|d=1565274687703|l=410000|mediaPid=oFXMSUI_EEvk|pd=1563557760000|pid=MdbdAekv6_JU|pvid=1014586435510|rid=1573596739926"/>
</video>
<imagestream src="https://tve-static-universalkids.akamaized.net/prod/image/506/607/190719_3991003_Trendy_Accent_Wall_Room_Makeover_anvver_1_1200.fs" width="190" height="107" type="application/filmstrip+json"/>
</par>
</seq>
</body>
</smil>

Мне нужно получить детали в элементе видео, но я не получаю желаемого результата. Я думаю, что мой модельный класс неверен.

Ниже мой модельный класс

@Root(name = "smil", strict = false)
public class Media {

@Element(name = "src")
@Path("video")
private String videoSrc;

public String getVideoSrc() {
    return videoSrc;
}

@Element(name = "title")
@Path("video")
private String title;

public String gettitle() {
    return title;
}
}

Скажите, пожалуйста, что мне здесь не хватает?

Ниже мой

 public void fetchMedia(String url, Action1<Media> tickerFeedAction1) {

    mediaPlaybackRest.get(url).enqueue(new Callback<Media>() {
        @Override
        public void onResponse(Call<Media> call, Response<Media> response) {
            Observable.just(response.body())
                    .onErrorResumeNext(throwable -> Observable.empty())
                    .subscribe(tickerFeedAction1);
        }

        @Override
        public void onFailure(Call<Media> call, Throwable t) {
            Observable.just((Media) null)
                    .onErrorResumeNext(throwable -> Observable.empty())
                    .subscribe(tickerFeedAction1);
        }
    });

}

Создание объекта модернизации из

 Retrofit retrofit1 = new Retrofit.Builder()
            .addConverterFactory(
                    SimpleXmlConverterFactory.createNonStrict(new 
 Persister(new AnnotationStrategy())))
            .baseUrl(baseUrl)
            .client(client)
            .build();
08.08.2019

  • Не получаете желаемого результата - что вы получаете? 08.08.2019
  • @GabeSechan я получаю ответ, но когда я пытаюсь получить response.body.getVideoSrc() или response.body.gettitle(), я получаю null. 08.08.2019
  • КОГДА вы создавали объект модификации, говорили ли вы ему использовать преобразователь XML? Изначально он поддерживает только JSON. 08.08.2019
  • @GabeSechan я знаю об этом и использую SimpleXmlConverterFactory 08.08.2019
  • Я считаю, что хитрость в том, что src — это не элемент, а атрибут. Примером элемента является встроенный список param. 08.08.2019
  • @EpicPandaForce, каким будет правильный класс модели? 08.08.2019

Ответы:


1

В вашем XML:

<smil xmlns="http://www.w3.org/2005/SMIL21/Language">
<head>
<meta name="refreshToken" content="016c71b0cc1e42fa48d576db495a3b2cc97d0b139add2e8fa0138c10351edcf3e76ac961a554"/>
<meta name="startingBitrate" content="2500000"/>
</head>
<body>
<seq>
<par>
<video src="

src не является элементом. Это был бы элемент, если бы он выглядел так:

<video>
    <src

Чего нет, так что это не @Element, это @Attribute.

Мне кажется, что вы должны попробовать следующее:

@Root(name = "smil", strict = false)
public class Media {

    @Attribute(name = "src")
    @Path("body/seq/par/video")
    private String videoSrc;

    public String getVideoSrc() {
        return videoSrc;
    }

    @Attribute(name = "title")
    @Path("body/seq/par/video")
    private String title;
09.08.2019
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...