2017-05-24 1 views
0

Ich habe das folgende Problem.Verwenden Sie Tags in exportierten XML von MySQL

Ich möchte Daten von einer MySQL-Datenbank in XML konvertieren. Eigentlich kann ich dies tun mit dem Befehl:

mysql --xml -i -u username -p tablename 'select * from performancedata LIMIT 10'> query.xml; 

Die Ausgabe sieht wie folgt aus:

<resultset statement="select * from performancedata LIMIT 10 
" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <row> 
    <field name="time">2017-05-20 18:04:14</field> 
    <field name="verbrauch">329</field> 
    <field name="leistung">759</field> 
    <field name="einspeisung">430</field> 
    <field name="avgEinspeisung">0</field> 
</row> 

....

Damit ich diese XML analysieren kann, ich habe die konvertieren Tags zu den Spaltennamen z Zeit =. Wie kann ich das am besten machen?

Ich brauche das folgende Format:

<row> 
    <time>2017-05-20 18:04:14</time> 
    <verbrauch>329</verbrauch> 
    <leistung>759</leistung> 
    <einspeisung>430</einspeisung> 
    <avgEinspeisung>0</avgEinspeisung> 
</row> 
+0

Mit PHP: Ich denke, Sie könnten versuchen, mit [SimpleXML] (http://php.net/manual/en/book .simplexml.php) - Abfrageergebnis in ein SimpleXML-Objekt laden, dann über 'row's untergeordnete Elemente iterieren und neues xml schreiben, während jedes' field'-Kind als Attribut diktiert wird. – Kitet

Antwort

0

Wie genau werden Sie diese Daten aus MySQL zu bekommen? Führen Sie innerhalb von PHP einen Befehlszeilenbefehl aus, um das ausgegebene XML zu erhalten? Oder zeigt Ihr Befehlszeilenbeispiel, wie Sie es von der Befehlszeile aus tun und jetzt möchten Sie herausfinden, wie Sie es in PHP machen?

Wie auch immer, ich denke, Ihre beste Wette, anstatt sich auf MySQL zu verlassen, um die Konvertierung in XML für Sie zu verwalten, ist es, es selbst zu konvertieren und einfach MySQL als Datenspeicher zu verwenden, der es sein soll. Sie könnten simplexmlelement verwenden, um die Konvertierung in XML zu verwalten, aber für ein einfaches Beispiel wie dieses ist es konzeptionell einfacher, das XML selbst zu erstellen. Wenn Sie für Ihre Datenbankverbindung so etwas wie PDO verwenden würde es in etwa so aussehen:

$qres = $pdo->query("select * from performancedata LIMIT 10"); 
$xml = '<row>'; 
foreach ($qres->fetch(PDO::FETCH_ASSOC) as $row) 
{ 
    foreach ($row as $name => $value) 
     $xml .= " <$name>$value</$name>"; 
} 
$xml .= '</row>'; 

print $xml;