Как вытащить определенный контент из xml (при загрузке страницы)?

Я работаю над кодом html/js, как показано ниже, принадлежащим следующему URL, в котором все содержимое В черном извлекается из XML.

<div class = "container-wrap background--gray-light-2 cf">
    <div class = "section container container--mid container--margbot background--white entry-content cf">
        <script src = "https://content.jwplatform.com/libraries/FZ8yNTef.js"></script>
        <center>
            <div id = "podcast" align = "center"></div>
        </center>
        <script>
            var PodcastplayerInstance = jwplayer("podcast");
            PodcastplayerInstance.setup({
                playlist: "//www.cpac.ca/tip-podcast/jwplayer.xml",
                androidhls: true,
                preload: "auto",
                height: 200,
                width: 400,
                visualplaylist: false,
                stretching: "fill",
                "plugins": {
                    "http://www.cpac.ca/tip-podcast/listy.js": {},
                    'viral-2': {'oncomplete': 'False', 'onpause': 'False', 'functions': 'All'}
                }
            });
        </script>
    </div><!-- .entry-content -->
</div><!-- .container-wrap -->

Постановка задачи:

Мне интересно, какой код php/javascript мне нужно добавить выше, чтобы он извлекал только 3 апреля 2019 г. или 1 апреля 2019 г. или только один контент (как показано ниже) ПРИ ЗАГРУЗКЕ СТРАНИЦЫ из вертикального прямоугольника отсюда http://www.cpac.ca/en/episode/

Как вытащить определенный контент из xml (при загрузке страницы)?

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

Использовал следующую логику для извлечения определенного содержимого из xml:

 $context  = stream_context_create(array('http' => array('header' => 'Accept: application/xml')));
 $url = 'http://www.cpac.ca/tip-podcast/jwplayer.xml';

 $xml = file_get_contents($url, false, $context);
 $xml = simplexml_load_string($xml);
 $itemarray = $xml->xpath("/rss/channel/item[1]");

Мне интересно, как я могу интегрировать его с приведенным выше кодом html/js. Значение (1, 2, 3, 4, 5) массива элементов может быть перемешано в зависимости от требований.

Можете ли вы контролировать, что возвращается в XML здесь cpac.ca/tip-подкаст/jwplayer.xml

Andrew 01.04.2019 21:44

Нет, я не могу контролировать, что там возвращается в xml.

flash 01.04.2019 21:45

Итак, вы просто хотите прочитать части XML с помощью Javascript. Вы пробовали это w3schools.com/xml/xml_parser.asp

Andrew 01.04.2019 21:47

Нет, я этого не пробовал. Я собираюсь посмотреть.

flash 01.04.2019 21:48

Содержимое прямоугольного черного ящика определенно взято отсюда cpac.ca/tip-подкаст/jwplayer.xml

flash 01.04.2019 21:56

Я играл с этим здесь codepen.io/anon/pen/mgyLYZ?editors=1001

Andrew 01.04.2019 21:56

Но вы жестко кодируете контент. Контент будет меняться каждую неделю.

flash 01.04.2019 21:58
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
284
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

JavaScript-решение

Вы можете использовать JW PLayer API плейлиста, где вы использовали бы jwplayer().getPlaylistItem() для извлечения только определенного элемента в списке воспроизведения. И в вашем случае jwplayer() это PodcastplayerInstance, и обратите внимание, что индекс основан на 0. Таким образом, вы можете добавить этот после, который вы называете PodcastplayerInstance.setup():

var item = PodcastplayerInstance.getPlaylistItem(0);
console.info( item.title, item.description, item ); // for debugging/testing purposes

И вы можете использовать jQuery (который — на момент написания — используется в страница) для обновления «вертикального прямоугольника», который (на основе текущей разметки) находится внутри div#podcast_listy_pl_panel:

var $item = jQuery( '#podcast_listy_pl_panel .listy-item' );
$item.find( '.listy-title' ).html( item.title + ' <span class = "listy-duration"></span>' );
$item.find( '.listy-description' ).html( item.description );

Чтобы получить второй, третий и т.д. элемент, достаточно изменить индекс:

var item = PodcastplayerInstance.getPlaylistItem(1); // get the second item; index = 1

PHP-решение

У вас уже есть код, который извлекает содержимое удаленного XML-файл, поэтому вы можете просто добавить его прямо под определением $itemarray (например, после в следующей строке: $itemarray = $xml->xpath("/rss/channel/item[1]");):

$item = $itemarray ? (array) $itemarray[0] : null;
if ( $item ) :
?>
<div class = "listy-textwrapper">
    <span class = "listy-title">
        <?php echo $item['title']; ?>
        <span class = "listy-duration"></span>
    </span>
    <span class = "listy-description">
        <?php echo $item['description']; ?>
    </span>
</div>
<?php
endif; // end $item

А чтобы получить второй предмет, просто используйте item[2] вот так:

$itemarray = $xml->xpath("/rss/channel/item[2]"); // get the second item; index = 2, not 1

Но $item здесь всегда указывает на $itemarray[0]:

$item = $itemarray ? (array) $itemarray[0] : null;

Спасибо Салли. У меня есть еще один вопрос. Это не похоже, мне интересно, можете ли вы взглянуть.

flash 11.04.2019 16:47

Пожалуйста. И что касается вопрос, я хотел помочь, но, глядя на страница, я думаю, проблема решена?

Sally CJ 16.04.2019 09:37

Нет, это не работает. Если вы заглянете на веб-сайт, то увидите, что показ в часовом поясе ET на 100 % правильный, так как они соответствуют правильным датам, но для других часовых поясов (PT, MT, CT, AT, NT) некоторые показы имеют неправильную дату.

flash 16.04.2019 17:00

Ты поблизости ?

flash 16.04.2019 19:21

Да, но я вернусь к вам позже.

Sally CJ 16.04.2019 20:59

Другие вопросы по теме