【发布时间】:2013-04-04 09:24:57
【问题描述】:
目前我的代码有点问题,希望您能帮我解决。
表格的第一个
SELECT artist, album, song
FROM artist
LEFT JOIN album
on artist.artist_ID = album.artist_ID
LEFT JOIN song
on album.album_ID = song.album_ID
ORDER BY artist.artist, album.album_ID, song.song_ID
我试图在 php 的帮助下将其导出为 XML,因此我直接在文档中创建 XML,因此我只需按下链接即可查看和访问 xml。但我遇到的问题是这首歌不会堆叠在专辑下。相反,他们这样做:
<music>
<artist name="$artist1">
<album name="$album1">
<song>$song1</song>
</album>
</artist>
</music>
<music>
<artist name="$artist1">
<album name="$album1">
<song>$song2</song>
</album>
</artist>
</music>
然后我想像这样堆叠:
<music>
<artist name="$artist1">
<album name="$album1">
<song>$song1</song>
<song>$song2</song>
<song>$song3</song>
</album>
</artist>
</music>
这是我目前用来导出到 XML 的 PHP 代码,这里有些东西不起作用。 在过去的 12 个小时里,我一直在尝试修复它,但没有运气。
$export = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
$export="<myTunes>";
while($row = mysqli_fetch_array($result))
{
$export.="<music>";
$artist=$row["artist"];
$album=$row["album"];
$song=$row["song"];
$export.=" <artist name='$artist'>
<album name='$album'>
<song>$song</song>
</album>
</artist>";
$export.="</music>";
}
$export.="</myTunes>";
file_put_contents("export.xml", $export);
echo "<a href='export.xml' target='_blank'>Export database as XML</a>";
如果可以的话,请帮忙,我在这里开始失去理智了。 最好的祝福, 克里斯
【问题讨论】:
-
您应该考虑使用
DomDocument或类似的东西来处理实际的XML 输出。直接操作字符串会使您的代码变得极其丑陋,而获得缩进良好的 XML 文档具有挑战性。 -
我同意,如果我想把专辑下的所有歌曲都堆叠起来真的很难。如果我在每一行都有 uniq 项目,这很容易.. 我会研究
DomDocuments的工作原理,看看我是否能弄清楚,谢谢你的提示 -
不要自己写。它已经完成了。请参阅XML_Query2XML,它还有最终用户文档:query2xml.sourceforge.net/docs - 您的好处:作者给出的示例非常相似:艺术家和专辑。 query2xml.sourceforge.net/docs/html/XML_Query2XML/…
-
为什么还要费心格式化 XML 文件?考虑通过仅删除所有换行符/制表符/空格字符将节省多少带宽。除非出于某种原因,您希望人工编辑 XML 文件,这通常不是 XML 的用途。