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