选择数组中的第二个XML元素

用户名

我正在通过simpleXML,它的一部分在这里:

...

<channel id="Polo TV">
    <display-name lang="pl">Polo TV</display-name>
    <icon src="http://m-tvguide.pl/ikony/polo.png" />
    <url>http://www.programtv.interia.pl</url>
  </channel>
  <programme start="20141030005500 +0100" stop="20141030015000 +0100" channel="TVP 1">
    <title lang="pl">Po prostu</title>
    <sub-title lang="pl">http://i.iplsc.com/-/0003K96AEV7D81JK-C0.jpg</sub-title>

    ...

    <category lang="pl">Informacja</category>
    <category lang="pl">Program Tomasza Sekielskiego</category>
  </programme>
  <programme start="20141030015000 +0100" stop="20141030033500 +0100" channel="TVP 1">
    <title lang="pl">Dorwać małego</title>

...

更多:http : //wklej.to/2zmFZ我的PHP脚本:

<?php

$xml=simplexml_load_file("file.xml");

$channels = array();
foreach ($xml->channel as $c) {
    $channels[ $c['id']->__toString() ] = $c->{'display-name'}->__toString();
}

$time = date( "YmdHi" );

foreach($xml->xpath( 'programme[@channel="TVP"]' ) as $item) {
    $start = substr( (string)$item["start"], 0, -8);
    $end   = substr( (string)$item["stop"], 0, -8);
    if ($time > $start && $time < $end) {
    echo "<b><font size='3'>$item->title </font></b><br>";
        echo "<u><b>Gatunek:</b></u> ".$item->{'category'}. "<br>";
        echo "<u><b>Start:</b></u> " .date("G:i", strtotime($start)) . '<br>';
        echo "<u><b>Koniec:</b></u> " .date("G:i", strtotime($end)) . '<br>';
        echo "<u><b>Kanał:</b></u> ".$channels[ $item["channel"]->__toString() ]. "<br>";     
        echo "<u><b>Opis:</b></u> ".$item->desc. "<br>";
    }
}

?>

从xml文件中可以看出,始终<category>提供两个指令。我想获得第二个而不是第一个,因为现在正在这样做。

我惊异了外星人

如果您有一个元素数组,则可以使用数字下标来访问它们,就像访问标准PHP数组中的元素一样。不过,最好检查是否首先设置了元素:

foreach($xml->xpath( 'programme[@channel="TVP"]' ) as $item) {
    // code here...
    # check whether the 'category' element is present
    if (isset($item->category)) {
        echo "<u><b>Gatunek:</b></u> ";
        # check if there are two category items; if so, print the second
        if (isset($item->category[1])) {
            echo $item->category[1] . "<br>";
        } else {
            echo $item->category . "<br>";
        }
    }
    // more code here...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

查找数组中的第二个最小元素

numpy数组从第二个数组插入第二个元素

选择列表的倒数第二个元素

熊猫分裂并选择第二个元素

选择第二个元素子Java脚本

如何在for循环中选择数组的每个第二个元素?

如何提取此numpy数组中的第二个元素,其中每行的第二个元素是另一个numpy数组

未选择选择元素中的第二个选项时禁用按钮

Perl在第二个元素之后加入数组

从第二个开始连接数组元素

如何访问结构数组的第二个元素?

查找数组的第二个元素

从具有第二个数组的元素的数组中获取数据

如何获取数组红宝石中数组的第二个元素

分解数组,以便每个第二个元素位于不同的数组中

获取在php中的第二个数组中有键的数组元素

如何选择jQuery nextUntil中的第二个元素?

如何解析JSON响应中的选择第二个HTML锚元素

在Testcafe中,如何等待相同选择器的第二个元素出现?

如何在Swift中的数组中获得倒数第二个元素?

在Postman中选择数组中的第二个对象

在数组中的每个第二个元素之后添加数据

如何返回java数组中的每个第二个元素

C ++:在数组中查找第二个max元素

如何仅在存在时检查 linq 中数组的第二个元素

查找数组中的第二个最大元素时 malloc 错误

如何写入结构数组的第二个元素?在C中

如何替换数组中的每个第二个元素?

选择JS中的第二个提交按钮