2012-04-04 91 views
0

我已經創建了一個MySQL表,並且希望將該表的內容保存在XML文件中以供其他應用程序使用。我可以訪問數據並在布爾羅窗口上回顯數據,但在使用DomDocument :: save('thexmlfile.xml')進行保存時,我看不到在正在運行的PHP文件的目錄位置創建的任何新文件。使用PHP DOM從MySQL數據創建XML文件

回答

0

你必須創建MySQL數據的XML DOM,然後將其保存在一個XML file.An例如:

$sql = 'select * from messages'; 
$run = mysql_query($sql, $link); 

if($run && mysql_num_rows($run)) { 
    $doc = new DOMDocument('1.0'); 
    $doc->formatOutput = true; 
    $doc->preserveWhiteSpace = true; 

    $root = $doc->createElement('data'); 
    $doc->appendChild($root); 

    while(($fetch = mysql_fetch_assoc($run))!== false) { 
     $node = $doc->createElement('node'); 
     $root->appendChild($node); 

     foreach($fetch as $key => $value) { 
      createNodes($key, $value, $doc, $node); 
     } 
    } 
    $doc->save("thexmlfile.xml"); 
} 

function createNodes($key, $value, $doc, $node) { 
    $key = $doc->createElement($key); 
    $node->appendChild($key); 
    $key->appendChild($doc->createTextNode($value)); 
} 

現在,你應該看到XML文件。

希望它有幫助。

+0

謝謝@Pushpesh。問題是,我現在收到錯誤「XML分析錯誤:語法錯誤 位置:協議://localhost/practice/displayQueue.php 行號1,列1:數據未找到。」當我註釋行$ doc-> save(「thexmlfile.xml」)並添加echo doc-> saveXML(); ^ – 2012-04-04 10:56:35

+0

好吧,你有我在我的例子中給出的mysql表結構...或者如果你有一個單獨的結構,在這裏發佈...我會做出適當的更改... – 2012-04-04 11:01:18

+0

我創建表使用CREATE TABLE 'messages'( 'id' INT(10)無符號NOT NULL的auto_increment, 'senderNumber' VARCHAR(50)默認NULL, 'smsMessage' VARCHAR(1600)默認NULL, 'sentTime'時間戳NULL默認CURRENT_TIMESTAMP, ' ('id') )ENGINE = MyISAM;其中'現在顯示我只想顯示3個字段senderNumber,smsMessage和timeReceived。 – 2012-04-04 11:08:32

0

嗯,你的問題是關於DOM,接受的答案是約DOM,但你似乎並不需要這個功能,那麼libxml的兄弟SimpleXML似乎更直截了當......我認爲你的問題是長但爲了完整起見:

$sql = 'select * from messages'; 
$run = mysql_query($sql, $link); 

if($run && mysql_num_rows($run)) { 
    $xml = new SimpleXMLElement('<data/>'); 
    while($fetch = mysql_fetch_assoc($run)) { 
     $node = $root->addChild('node'); 
     foreach($fetch as $key => $value) { 
      $node->addChild($key,$value); 
     } 
    } 
    $xml->asXML("thexmlfile.xml"); 
}