2014-03-26 120 views
0

我正在測試一些使用PHP讀取XML的東西。下面是XML文件的示例:用PHP讀取XML

<?xml version="1.0" encoding="UTF-8" ?> 
<BroadcastData creationDate="20140326085217"> 
<ScheduleData> 
<ChannelPeriod beginTime="20140326090000" endTime="20140402044500"> 
<ChannelId>Rai Uno</ChannelId> 
<Event beginTime="20140326090000" duration="1800"> 
<EventId>260852180006</EventId> 
<EventType>P</EventType> 
<EpgProduction> 
<EpgText language="eng"> 
<Name>Unomattina storie vere</Name> 
</EpgText> 
</EpgProduction> 
</Event> 
<Event beginTime="20140326093000" duration="1500"> 
<EventId>260852180007</EventId> 
<EventType>P</EventType> 
<EpgProduction> 
<EpgText language="eng"> 
<Name>Unomattina Verde</Name> 
</EpgText> 
</EpgProduction> 
</Event> 

這是我創建的PHP腳本,但是當我運行PHP文件時沒有顯示任何內容。

<?php 

$completeurl ="test.xml"; 
$xml = simplexml_load_file($completeurl); 

$info = $xml->BroadcastData->ScheduleData->ChannelPeriod->ChannelId; 

for ($i = 0; $i++) { 
$begintime = $info[$i]->Event->attributes()->beginTime; 


echo "<p>Channel: ".$info."<br/>"."Begin Time: ".$begintime."</p>"; 
} 



?> 

非常感謝您的幫助!

+0

'爲( $ i = 0; $ i> 0; $ i ++){'...你認爲這個循環會啓動嗎? :) –

+0

嗨@傑克,我已經登陸了這樣的循環,但它仍然不工作:'for($ i = 0; $ i ++){ $ begintime = $ info [$ i] - > Event- >屬性() - > BEGINTIME; echo「

Channel:」。$ info。「
」。「Begin Time:」。$ begintime。「

」; }' – RCB

回答

1

你應該遍歷每個信道期間,而不是信道ID(其是子元件反正):

$doc = simplexml_load_file($completeurl); 

foreach ($doc->ScheduleData->ChannelPeriod as $channelPeriod) { 
    $channelId = (string)$channelPeriod->ChannelId; 

    foreach ($channelPeriod->Event as $event) { 
     $beginTime = $event['beginTime']; 

     printf('<p>Channel: %s<br />Begin Time: %s</p>', $channelId, $beginTime); 
    } 
} 
+0

您的幫助@jack非常感謝,我已經amneded如下代碼,但由於某種原因,現在還沒有任何輸出:' ScheduleData-> ChannelPeriod爲$ channelPeriod){ $ channelId =(string)$ channelPeriod-> ChannelId; ($ channelPeriod-> Event as $ event){ $ beginTime = $ event ['beginTime']; printf('

頻道:%s
開始時間:%s

',$ channelId,$ beginTime); } } ?>' – RCB

+0

我測試了我的代碼在你的部分XML上,它工作得很好。 –

+0

您能否向我提供您使用的完整代碼,以便我可以複製它,因爲它不想工作,我正在使用mamp來測試 – RCB

0

使用下面的函數來將XML字符串轉換爲陣列

json_decode(json_encode((array)simplexml_load_string($sXML)),1);