Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Foreach-Schleife mit Zeichenfolge zur Ausgabe von XML

foreach kann jedes Array oder Objekt iterieren, das traversable implementiert. Das Ergebnis von PDOStatement::fetch() ist der Datensatz/die Zeile. Geben Sie einfach die Anweisung an foreach.

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

Die bessere API für solche Dumps ist XMLWriter . Es schreibt das Ergebnis direkt in einen Stream, ohne zuerst das gesamte Dokument im Speicher zu speichern. Die Verwendung einer XML-API kümmert sich bei Bedarf auch um das Escaping. Hier ein kleines Beispiel:

$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();

Ausgabe:

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

In DOM erstellen, hängen und konfigurieren Sie Knoten. Hier ein kleines Beispiel:https://stackoverflow.com/a/21760903/2265374