从php读取XML文件
问题描述:
阅读此XML数据时遇到问题。从php读取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>
我有一个包含含有不同值几个<MESSAGE>
标签一个<MESSAGES>
标签。我目前使用此代码来读取每个<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>
标签?
答
问题是simplexml对象返回第一条记录(0)。因此,在你的代码中,你需要循环Messages->消息标签来达到它们。 您可以使用此代码来获取所有的消息:
$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 />';
}
}
}
谢谢你这么多 – arok
也请解释为什么你的答案的作品,哪些问题是 – andyb
@andyb问题是simplexml的对象是返回的第一个记录(0) 。因此,在你的代码中,你需要循环Messages->消息标签来达到它们。 – artuc