使用PHP DOM从MySQL数据创建XML文件

时间:2012-04-04 10:07:24

标签: php mysql xml dom

我创建了一个MySQL表,并希望将表的内容保存在XML文件中以供其他应用程序使用。我可以很好地访问数据并在broswer窗口上回显数据,但是在使用DomDocument :: save('thexmlfile.xml')进行保存时,我看不到在正在运行的PHP文件的目录位置中创建的任何新文件。 / p>

2 个答案:

答案 0 :(得分: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文件。

希望,这有帮助。

答案 1 :(得分: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");
}