想要使用 PHP 从以下 XML 响应中提取两者 <messageid>
Want to Extract Both <messageid> using PHP from following XML response
我有一条 SMS API,并且得到 XML 响应想要提取所有使用 PHP 的外发 SMS,请指导我朋友。
这是我的 API 回复
<response xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<action>sendmessage</action>
<data>
<acceptreport>
<statuscode>0</statuscode>
<statusmessage>Message accepted for delivery</statusmessage>
<messageid>223639802</messageid>
<originator>88434</originator>
<recipient>923336458112</recipient>
<messagetype>SMS:TEXT</messagetype>
<messagedata>testing by JAved for DLS</messagedata>
</acceptreport>
<acceptreport>
<statuscode>0</statuscode>
<statusmessage>Message accepted for delivery</statusmessage>
<messageid>223639803</messageid>
<originator>88434</originator>
<recipient>923497105188</recipient>
<messagetype>SMS:TEXT</messagetype>
<messagedata>testing by JAved for DLS</messagedata>
</acceptreport>
</data>
</response>
请阅读上面的评论,至少下次尝试自己解决问题。
这应该可以解决您的问题:
<?php
$xmlstr = '<response xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<action>sendmessage</action>
<data>
<acceptreport>
<statuscode>0</statuscode>
<statusmessage>Message accepted for delivery</statusmessage>
<messageid>223639802</messageid>
<originator>88434</originator>
<recipient>923336458112</recipient>
<messagetype>SMS:TEXT</messagetype>
<messagedata>testing by JAved for DLS</messagedata>
</acceptreport>
<acceptreport>
<statuscode>0</statuscode>
<statusmessage>Message accepted for delivery</statusmessage>
<messageid>223639803</messageid>
<originator>88434</originator>
<recipient>923497105188</recipient>
<messagetype>SMS:TEXT</messagetype>
<messagedata>testing by JAved for DLS</messagedata>
</acceptreport>
</data>
</response>';
$xml = new SimpleXMLElement($xmlstr);
echo $xml->data->acceptreport->messageid;
我还注意到您的 xml 中缺少一个 "response" 结束标记,所以这可能是您遇到的问题。我在这个例子中添加了它。
我有一条 SMS API,并且得到 XML 响应想要提取所有使用 PHP 的外发 SMS,请指导我朋友。 这是我的 API 回复
<response xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<action>sendmessage</action>
<data>
<acceptreport>
<statuscode>0</statuscode>
<statusmessage>Message accepted for delivery</statusmessage>
<messageid>223639802</messageid>
<originator>88434</originator>
<recipient>923336458112</recipient>
<messagetype>SMS:TEXT</messagetype>
<messagedata>testing by JAved for DLS</messagedata>
</acceptreport>
<acceptreport>
<statuscode>0</statuscode>
<statusmessage>Message accepted for delivery</statusmessage>
<messageid>223639803</messageid>
<originator>88434</originator>
<recipient>923497105188</recipient>
<messagetype>SMS:TEXT</messagetype>
<messagedata>testing by JAved for DLS</messagedata>
</acceptreport>
</data>
</response>
请阅读上面的评论,至少下次尝试自己解决问题。 这应该可以解决您的问题:
<?php
$xmlstr = '<response xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<action>sendmessage</action>
<data>
<acceptreport>
<statuscode>0</statuscode>
<statusmessage>Message accepted for delivery</statusmessage>
<messageid>223639802</messageid>
<originator>88434</originator>
<recipient>923336458112</recipient>
<messagetype>SMS:TEXT</messagetype>
<messagedata>testing by JAved for DLS</messagedata>
</acceptreport>
<acceptreport>
<statuscode>0</statuscode>
<statusmessage>Message accepted for delivery</statusmessage>
<messageid>223639803</messageid>
<originator>88434</originator>
<recipient>923497105188</recipient>
<messagetype>SMS:TEXT</messagetype>
<messagedata>testing by JAved for DLS</messagedata>
</acceptreport>
</data>
</response>';
$xml = new SimpleXMLElement($xmlstr);
echo $xml->data->acceptreport->messageid;
我还注意到您的 xml 中缺少一个 "response" 结束标记,所以这可能是您遇到的问题。我在这个例子中添加了它。