0

MySQL テーブルを作成しましたが、テーブルの内容を XML ファイルに保存して、他のアプリケーションで使用したいと考えています。データに問題なくアクセスでき、ブラウザー ウィンドウでデータをエコーできますが、DomDocument::save('thexmlfile.xml') を使用して保存すると、実行中の PHP ファイルのディレクトリに作成された新しいファイルが表示されません。

4

2 に答える 2

0

mysql データから dom xml を作成し、それを xml ファイルに保存する必要があります。例:

$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 ファイルが表示されます。

それが役に立てば幸い。

于 2012-04-04T10:24:06.210 に答える
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");
}
于 2012-06-28T22:48:09.207 に答える