2012-04-04 11 views
0

私はMySQLテーブルを作成しましたが、他のアプリケーションで使用するためにテーブルの内容をXMLファイルに保存したいと思います。データにアクセスしてbroswerウィンドウにエコーすることはできますが、DomDocument :: save( 'thexmlfile.xml')を使用して保存すると、実行中のPHPファイルのディレクトリに新しいファイルが作成されません。あなたがMySQLのデータからDOM XMLを作成し、XML file.An例ではそれを保存する必要がありますPHP DOMを使用してMySQLデータからXMLファイルを作成する

答えて

0

$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解析エラー:構文エラー 場所:protocal://localhost/practice/displayQueue.php 行番号1、列1:データが見つかりません。これは、$ doc-> save( "thexmlfile.xml")行にコメントを付けてecho doc-> saveXML()を追加すると表示されます。 ^ –

+0

私は私の例で与えたmysqlテーブル構造を持っていますか...別の構造を持っていれば、ここに投稿してください...私は適切な変更を行います... –

+0

CREATE TABLE 'messages'( ' id' int型(10)符号なしNOT NULL AUTO_INCREMENT、 'senderNumber'のVARCHAR(50)、デフォルトのNULL、 ' smsMessage'のVARCHAR(1600)のデフォルトのNULL、 'sentTime'タイムスタンプNULLのデフォルトのCURRENT_TIMESTAMP、 ' (SMS):TEXT '、 PRIMARY KEY( 'id') )ENGINE = MyISAM;デフォルトのNULL、 デフォルトのNULL、 メッセージタイプvarchar(50)デフォルト' SMS:TEXT '今私はちょうど3つのフィールドsenderNumber、smsMessageとtimeReceivedを表示したい表示上。 –

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"); 
} 
関連する問題