【发布时间】:2022-01-03 06:39:22
【问题描述】:
我有以下代码,它显示日历 XML 提要,但是,并非所有事件都有开始/结束时间。这会导致错误。我希望当一个事件没有开始和结束时间时,它会显示“全天”。
//load xml file
$sxml = simplexml_load_file($url) or die("Error: Cannot create object");
echo '<div class="calendar">';
#search for all event start dates
$starts = $sxml->xpath('//event/startdate');
#get the unique start dates of these event
$dates = array_unique($starts);
foreach($dates as $date) {
echo "<li><h1>{$date}</h1></li>" ."\n";
#search for all events taking place on each start date
$expression = "//event/startdate[.='{$date}']";
$events = $sxml->xpath($expression);
#iterate through these events and find their description
foreach ($events as $event){
echo "\t" , "<li><div class='time'>{$event->xpath('./following-sibling::starttime')[0]} - {$event->xpath('./following-sibling::endtime')[0]}</div><div class='event'><b> {$event->xpath('./following-sibling::description')[0]}</b> // {$event->xpath('./following-sibling::category')[0]}</div></li>";
echo "\n";
}
echo "\n";
}
echo "</div>";
下面的示例 XML 文件:
<event>
<startdate>24/11/2021</startdate>
<alldayevent>true</alldayevent>
<description>Event 1</description>
<category>Main Events</category>
</event>
<event>
<startdate>24/11/2021</startdate>
<alldayevent>false</alldayevent>
<starttime>14:00</starttime>
<endtime>16:30</endtime>
<description>Event 2</description>
<category>Main Events</category>
</event>
预期输出:
如果事件有时间/alldayevent = true,则显示开始和结束时间,否则如果 alldayevent = true,则输出 'All Day'
【问题讨论】:
-
请编辑您的问题并添加一个有代表性的 xml 示例,其中包含和不包含开始/结束时间以及每种情况下的预期输出。
-
谢谢,问题已更新。