2009-08-20 83 views
2

我正在尝试使用PHP读取iTunes XML文件。我想提取特定位的信息。如姓名,艺术家和专辑。我将如何做到这一点?我发现this解析整个文件时效果很好。我想也许用这个来创建一个更容易阅读的全新XML文件。使用PHP读取iTunes XML文件

但是一定有更好的办法。

一首曲目的XML结构如下:

<dict> 
    <key>Track ID</key><integer>6136</integer> 
    <key>Name</key><string>The Boy Who Destroyed the World</string> 
    <key>Artist</key><string>AFI</string> 
    <key>Album Artist</key><string>AFI</string> 
    <key>Composer</key><string>AFI</string> 
    <key>Album</key><string>Tony Hawk Pro Skater 3</string> 
    <key>Genre</key><string>Punk Rock</string> 
    <key>Kind</key><string>MPEG audio file</string> 
    <key>Size</key><integer>2971924</integer> 
    <key>Total Time</key><integer>185364</integer> 
    <key>Track Number</key><integer>3</integer> 
    <key>Year</key><integer>1999</integer> 
    <key>Date Modified</key><date>2009-08-20T15:03:20Z</date> 
    <key>Date Added</key><date>2009-08-20T15:03:20Z</date> 
    <key>Bit Rate</key><integer>128</integer> 
    <key>Sample Rate</key><integer>44100</integer> 
    <key>Play Count</key><integer>34</integer> 
    <key>Play Date</key><integer>3332385360</integer> 
    <key>Play Date UTC</key><date>2009-08-06T05:36:00Z</date> 
    <key>Sort Name</key><string>Boy Who Destroyed the World</string> 
    <key>Persistent ID</key><string>9E590180768D4AD8</string> 
    <key>Track Type</key><string>File</string> 
    <key>Location</key><string>FilePath</string> 
    <key>File Folder Count</key><integer>4</integer> 
    <key>Library Folder Count</key><integer>1</integer> 
</dict> 

回答

1

我不认为解析文件,然后创建更容易解析的另一个文件是正确的解决方案。你已经解析了主文件,为什么还要做更多的工作?

simplexml允许您相对容易地导航XML对象,所以您应该能够获取所需的信息。我将使用simplexml_load_file()simplexml_load_string()加载主文件,然后可能SimpleXMLElement::xpath导航您的结果XML结构来查找所需的数据。

+0

我不能用简单的XML来做到这一点。当我用它解析一个轨道节点时,就会出现这样的情况。 http://pastebin.com/f19eca19c – 2009-08-20 17:30:39

+0

输出Ben有什么问题?看起来你有一个对象,然后使用该对象输出你需要的东西,或插入到你选择的数据库中。 – Jakub 2009-08-20 17:36:13