首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SimpleXML对XML feed进行排序

如何使用SimpleXML对XML feed进行排序
EN

Stack Overflow用户
提问于 2009-11-26 00:09:25
回答 2查看 5.9K关注 0票数 0

我已经开始使用simplexml函数,它似乎比我之前尝试使用的其他解析器工作得更好。我已经到了需要按transmissiondate对项目进行排序的阶段-我尝试使用uasort,但没有对项目的顺序进行任何更改。

此外,有时一个节目在同一天播放不止一次-按videoID排序会不会更容易一些?

对象的外观如下所示:

代码语言:javascript
复制
[0] => SimpleXMLElement Object
    (
        [VideoID] => 108059
        [Genre] => Music
        [ProgrammeName] => MTV
        [OriginalAiringDate] => 2009-11-10T19:22:24
        [TransmissionDate] => 2009-11-10T19:22:24
   )
[1] => SimpleXMLElement Object
    (
        [VideoID] => 108395
        [ExpiryDate] => 2009-12-12T23:59:59
        [DateCreated] => 2009-11-12T13:28:54
        [Genre] => Music
        [ProgrammeName] => MTV
        [OriginalAiringDate] => 2009-11-12T19:22:32
        [TransmissionDate] => 2009-11-12T19:22:32
 )

$xml = simplexml_load_file("data.xml");
$count = 0;
$sortItem = 0;
$dateformat = "D j M, g:ia";
$sortArray = array();
foreach($xml->CatchUp as $item){
$sortArray[$count][TransmissionDate] = $item;
if($count < 4){
print "<p>Programme Name:<strong> "  . $item->ProgrammeName. "</strong></p>";
print "<p>Date Shown:<strong> "  . date($dateformat, strtotime($item->TransmissionDate)). "</strong></p>";
print "<p>Description:<strong> " . trunc($item->ShortSynopsis,30, " ")."</strong></p>";
print "<p><a href='". $item->VideoID. "'>". $item->VideoID."</a></p>";
         $count++;
  }
}

}

排序($sortArray);

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-26 02:10:16

我认为有两种方法可以做到这点。第一种方法是创建一个包含TransmissionDate值的数组,然后创建另一个包含相应节点的数组,然后使用array_multisort()。这有点单调乏味,所以我要做的是:下载SimpleDOM并使用sortedXPath()

代码语言:javascript
复制
include 'SimpleDOM.php';

$xml = simpledom_load_file("data.xml");
$dateformat = "D j M, g:ia";

foreach($xml->sortedXPath('CatchUp[ProgrammeName="MTV"]', 'TransmissionDate') as $i => $item)
{
    if ($i == 4)
    {
        // I assume you only want the first 4
        break;
    }
    print "<p>Programme Name:<strong> "  . $item->ProgrammeName. "</strong></p>";
    print "<p>Date Shown:<strong> "  . date($dateformat, strtotime($item->TransmissionDate)). "</strong></p>";
    print "<p>Description:<strong> " . trunc($item->ShortSynopsis,30, " ")."</strong></p>";
    print "<p><a href='". $item->VideoID. "'>". $item->VideoID."</a></p>";
}
票数 1
EN

Stack Overflow用户

发布于 2009-11-26 00:26:52

尝试在从SimpleXMLElement对象中提取数据时使用强制转换

使用视频id:$sortArray[$count][VideoID] = (int)$item;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1798005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档