我在阅读此XML数据时遇到问题。
<?xml version="1.0"?>
<DOCUMENT>
<VERSION>2.0</VERSION>
<MESSAGES>
<MESSAGE>
<SEND_DATE>2014-02-26</SEND_DATE>
<ENTITY_ID>7002</ENTITY_ID>
<RECIPIENT_NUM>xxxxxxxxxxxxxx</RECIPIENT_NUM>
<MESSAGE_PARAMS>
<DEN_SURNAME>Roze</DEN_SURNAME>
<APPT_DATE>27/02/14</APPT_DATE>
<APPT_TIME>09:00</APPT_TIME>
</MESSAGE_PARAMS>
</MESSAGE>
<MESSAGE>
<SEND_DATE>2014-02-26</SEND_DATE>
<ENTITY_ID>7002</ENTITY_ID>
<RECIPIENT_NUM>xxxxxxxxxxxx</RECIPIENT_NUM>
<MESSAGE_PARAMS>
<DEN_SURNAME>Roze</DEN_SURNAME>
<APPT_DATE>27/02/14</APPT_DATE>
<APPT_TIME>09:00</APPT_TIME>
</MESSAGE_PARAMS>
</MESSAGE>
<MESSAGE>
<SEND_DATE>2014-02-26</SEND_DATE>
<ENTITY_ID>7002</ENTITY_ID>
<RECIPIENT_NUM>xxxxxxxxxxxxxx</RECIPIENT_NUM>
<MESSAGE_PARAMS>
<DEN_SURNAME>Roze</DEN_SURNAME>
<APPT_DATE>27/02/14</APPT_DATE>
<APPT_TIME>09:00</APPT_TIME>
</MESSAGE_PARAMS>
</MESSAGE>
</MESSAGES>
</DOCUMENT>
我有一个<MESSAGES>
标记,其中包含多个包含不同值的<MESSAGE>
标记。我目前正在使用此代码读取每个<MESSAGE>
代码中的值。
$dr_name=$xml->MESSAGES->MESSAGE->MESSAGE_PARAMS->DEN_SURNAME;
$apt_date= $xml->MESSAGES->MESSAGE->MESSAGE_PARAMS->APPT_DATE;
$apt_time= $xml->MESSAGES->MESSAGE->MESSAGE_PARAMS->APPT_TIME;
我只获取第一个<MESSAGE>
标记的值。
如何阅读所有<MESSAGE>
代码?
答案 0 :(得分:3)
问题是simplexml对象正在返回第一条记录(0)。因此,在您的代码中,您需要循环使用Messages-&gt;消息标记来覆盖它们。 您可以使用此代码来获取所有消息:
$file = 'data.xml';
$oXml = simplexml_load_file($file);
if($oXml){
if(count($oXml->MESSAGES->MESSAGE) > 0){
foreach($oXml->MESSAGES->MESSAGE as $m){
echo 'Sent: '.$m->SEND_DATE.'<br />';
echo 'ID: '.$m->ENTITY_ID.'<br />';
echo 'ID: '.$m->RECIPIENT_NUM.'<br />';
echo 'Surname: '.$m->MESSAGE_PARAMS->DEN_SURNAME.'<br /><hr /><br />';
}
}
}