sql >> Base de Datos >  >> RDS >> Mysql

Bucle Foreach usando una cadena para generar XML

foreach puede iterar cualquier arreglo u objeto que implemente transitable. El resultado de PDOStatement::fetch() es el registro/fila. Simplemente proporcione la declaración a foreach.

foreach($statement as $row) { ...   

La mejor API para vertederos como ese es XMLWriter . Escribe el resultado directamente en una secuencia, sin almacenar primero todo el documento en la memoria. El uso de una API XML también se encargará del escape según sea necesario. He aquí un pequeño ejemplo:

$statement = [
  [ 'name' => 'one', 'location' => '...', /* ... */],
  [ 'name' => 'two', 'location' => '...', /* ... */]
];

$xmlWriter = new XMLWriter();
$xmlWriter->openUri('php://stdout');

$xmlWriter->startDocument();
$xmlWriter->setIndent(2);
$xmlWriter->startElement('markers');
foreach ($statement as $row) {
  $xmlWriter->startElement('marker');
  $xmlWriter->writeAttribute('name', $row['name']);
  /* other attributes ... */
  $xmlWriter->endElement();
}
$xmlWriter->endElement();
$xmlWriter->endDocument();

Salida:

<?xml version="1.0"?>
<markers>
 <marker name="one"/>
 <marker name="two"/>
</markers>

En DOM creas, agregas y configuras nodos. Aquí hay un pequeño ejemplo:https://stackoverflow.com/a/21760903/2265374