2017-05-24 4 views
0

我遇到以下問題。在MySQL導出的XML中使用標籤

我想將數據從一個MySQL數據庫轉換爲XML。其實我做這個用命令:

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

輸出看起來是這樣的:

<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> 

....

所以,我可以解析這個XML,我必須轉換標記到列名稱,例如時間=。我怎樣才能做到最好?

我需要的格式如下:

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

與PHP:我想你可以嘗試使用[SimpleXML](http://php.net/manual/en/book .simplexml.php) - 將查詢結果加載到一個SimpleXML對象中,然後迭代'row'的子項並按屬性指定命名每個'field'子項時寫入新的xml。 – Kitet

回答

0

究竟你是如何得到這個數據出來的MySQL的?你真的從PHP內部運行命令行命令來獲取輸出的XML嗎?或者你的命令行示例顯示了你是如何從命令行執行的,現在你想弄清楚如何在PHP中執行它?無論哪種方式,我認爲你最好的選擇,而不是依靠MySQL來爲你管理向XML的轉換,而是自己轉換它,並簡單地使用MySQL作爲它的數據存儲。您可以使用simplexmlelement來管理向XML的轉換,但對於這樣的簡單示例,您自己構建xml在概念上更容易。如果你正在使用類似PDO的數據庫連接它看起來像這樣:

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