Utilice PHP para analizar XML
-
29-10-2019 - |
Pregunta
Aquí hay un ejemplo de mis datos xml
<GetSendStatisticsResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
<GetSendStatisticsResult>
<SendDataPoints>
<member>
<DeliveryAttempts>69</DeliveryAttempts>
<Timestamp>2011-09-12T01:00:00Z</Timestamp>
<Rejects>0</Rejects>
<Bounces>0</Bounces>
<Complaints>0</Complaints>
</member>
<member>
<DeliveryAttempts>1</DeliveryAttempts>
<Timestamp>2011-09-08T17:00:00Z</Timestamp>
<Rejects>0</Rejects>
<Bounces>0</Bounces>
<Complaints>0</Complaints>
</member>
<member>
<DeliveryAttempts>282</DeliveryAttempts>
<Timestamp>2011-09-09T18:00:00Z</Timestamp>
<Rejects>0</Rejects>
<Bounces>0</Bounces>
<Complaints>0</Complaints>
</member>
Y aquí está mi código:
$xml = simplexml_load_string($resp);
$result = $xml->xpath('//member');
foreach($result->member as $member)
{
echo "<p>";
echo "Delivery Attempts: ".$member->DeliveryAttempts."<br/>";
echo "</p>";
}
Pero no funciona.También estoy bien si $ xml se convierte en JSON o una matriz.Lo que funcione mejor para iterar a través del xml para mostrar DeliveryAttempts.
Solución
Esto se debe al espacio de nombres XML.Haz algo como esto:
$xml->registerXPathNamespace( 'ses', 'http://ses.amazonaws.com/doc/2010-12-01/' );
$result = $x->xpath( '//ses:member' ) ;
Otros consejos
Prueba
foreach ($result as $member) {
...
}
en su lugar.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow