PHP读取数据库并生成xml文件

最近把一个数据库写入的小程序改了下,为实现音乐播放器的xml配置文件自动生成,下面介绍一下xml文件的生成原理:
//建立数据库连接
require "connect.php";
$sql = "SELECT * FROM  `tz_todo` ORDER BY  `tz_todo`.`position` ASC";
$query = mysql_query($sql,$link);

以上是与数据库链接的PHP代码,做了一次排序查询,返回值到变量$query上。

接下来是PHP产生xml文件结构的代码,每个节点有中文解释:
// 建立xml的标注信息
$dom = new DOMDocument("1.0","utf-8");
// display document in browser as plain text
// for readability purposes
header("Content-Type: text/xml");
// create root element
$root = $dom->createElement("playlist");
$dom->appendChild($root);
// 建立根下playlist的属性
$xmlns = $dom->createAttribute("xmlns");
$root->appendChild($xmlns);
// 赋值为上面的
$xmlnsValue = $dom->createTextNode("http://music.malu.me/");
$xmlns->appendChild($xmlnsValue);
// 建立根下playlist的属性
$encoding = $dom->createAttribute("encoding");
$root->appendChild($encoding);
// 赋值为上面的
$encodingValue = $dom->createTextNode("utf-8");
$encoding->appendChild($encodingValue);
// 建立根下playlist的属性
$version = $dom->createAttribute("version");
$root->appendChild($version);
// 赋值为上面的
$versionValue = $dom->createTextNode("1");
$version->appendChild($versionValue);
// 建立根下子节点tracklist
$tracklist = $dom->createElement("trackList");
$root->appendChild($tracklist);

上面生成了跟节点和trackList子节点,还需要track子节点,我把它放在一个循环里,这样从数据库读出的数据会每次循环写入子节点中:
while ($row = mysql_fetch_array($query)){
eregi("^(.*),(.*)",$row[text],$rg);
// 建立根下子节点track开始
$track = $dom->createElement("track");
$tracklist->appendChild($track);
// 建立track下title子节点
$title = $dom->createElement("title");
$track->appendChild($title);
// 建立track下location子节点
$location = $dom->createElement("location");
$track->appendChild($location);
// 建立根下子节点track结束
//
//
// 赋值titile
$text = $dom->createTextNode($rg[1]);
$title->appendChild($text);
// 赋值location
$text = $dom->createTextNode($rg[2]);
$location->appendChild($text);
// 赋值结束
}

数据库出来的数据以正则表达式进行切割,关键字是“,”号,切割后的数据被分到数组里,分别赋给title子节点和location子节点。

以上xml构建就完成了,下面就可以在本地生成xml文件:
echo $dom->saveXML();
$dom->save("playlist.xml");
chmod ("playlist.xml",0666);

输出到浏览器,并写入本地,并改变权限(Linux下防止写入失败)

生成的xml文件演示:http://music.malu.me/demo/playlist.xml

提供的音乐播放器演示:http://music.malu.me/demo/index.html

更新实例演示的一篇文章>>用PHP写的一个音乐管理工具

此条目是由 malu8 发表在 未分类 分类目录的。将固定链接加入收藏夹。

评论已关闭。