如何从xml中提取特定内容(页面加载时)?

时间:2019-04-01 19:26:11

标签: javascript php xml parsing xml-parsing

我正在处理属于以下url html / js 代码,其中所有黑色内容均从{{ 3}}

B

问题陈述:

我想知道我需要在上面添加什么php / javascript代码,以便仅获取 2019年4月3日 2019年4月1日一个内容(如下所示)从此处xml

的垂直矩形框中下载页面

http://www.cpac.ca/en/episode/

此刻,正在从xml中提取 5个内容(在黑色矩形框中)

使用以下逻辑以便从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 -->

我想知道如何将其与上面的html / js代码集成。根据需要,项目数组的值(1、2、3、4、5)可以改组。

1 个答案:

答案 0 :(得分:2)

JavaScript解决方案

您可以使用JW PLayer playlist API,在此您可以使用jwplayer().getPlaylistItem()来检索播放列表中的特定项目。在您的情况下,jwplayer()PodcastplayerInstance,请注意索引是从0开始的。因此,您可以在致电PodcastplayerInstance.setup() 之后添加

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

您可以使用jQuery(在撰写本文时,它在page上使用)来更新“垂直矩形框”,该矩形框(基于当前标记)位于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 file内容的代码,因此您可以在定义$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;