修复 HTDP 练习 200 的 "read-itunes-as-list: expects a file with XML document as first argument, given "itunes.xml""
Fixing "read-itunes-as-list: expects a file with XML document as first argument, given "itunes.xml"" for HTDP exercise 200
我正在做 HtDP Exercises, and I'm having trouble on Exercise 200。我按照书上说的做了,但我一直犯同样的错误。无论我尝试什么,我总是得到这个:
read-itunes-as-list: expects a file with XML document as first argument, given "itunes.xml"
我尝试过更改 itunes.xml
的名称和其他一些操作,但它们似乎都失败了。有人知道如何解决这个问题吗?
这是我的代码(到目前为止):
; An LTracks is one of:
; – '()
; – (cons Track LTracks)
; Example:
; (cons (make-track "Wild Child" "Enya" "A Day Without" 227996 2 (make-date 2002 7 17 3 55 14) 20 (make-date 2011 5 17 17 35 13))
; '())
;(define-struct track
; [name artist album time track# added play# played])
; A Track is a structure:
; (make-track String String String N N Date N Date)
; interpretation An instance records in order: the track's
; title, its producing artist, to which album it belongs,
; its playing time in milliseconds, its position within the
; album, the date it was added, how often it has been
; played, and the date when it was last played
; Example:
; (make-track "Wild Child" "Enya" "A Day Without" 227996 2 (make-date 2002 7 17 3 55 14) 20 (make-date 2011 5 17 17 35 13))
;(define-struct date [year month day hour minute second])
; A Date is a structure:
; (make-date N N N N N N)
; interpretation An instance records six pieces of information:
; the date's year, month (between 1 and 12 inclusive),
; day (between 1 and 31), hour (between 0
; and 23), minute (between 0 and 59), and
; second (also between 0 and 59).
; Example:
; (make-date 2019 7 9 20 35 54)
; modify the following to use your chosen name
(define ITUNES-LOCATION "itunes.xml")
; LTracks
(define itunes-tracks
(read-itunes-as-tracks ITUNES-LOCATION))
和itunes.xml
:
<dict>
<key>Track ID</key><integer>442</integer>
<key>Name</key><string>Wild Child</string>
<key>Artist</key><string>Enya</string>
<key>Album</key><string>A Day Without</string>
<key>Genre</key><string>New Age</string>
<key>Kind</key><string>MPEG audio file</string>
<key>Size</key><integer>4562044</integer>
<key>Total Time</key><integer>227996</integer>
<key>Track Number</key><integer>2</integer>
<key>Track Count</key><integer>11</integer>
<key>Year</key><integer>2000</integer>
<key>Date Added</key><date>2002-7-17T3:55:14</date>
<key>Play Count</key><integer>20</integer>
<key>Play Date</key><integer>3388484113</integer>
<key>Play Date UTC</key><date>2011-5-17T17:35:13
</dict>
正如我在评论中提到的,您的 itunes.xml
格式错误。例如,
- 在最后一行的前一行,你有
<date>
但没有相应的结束标记 </date>
。
- 日期格式错误。例如,
2002-7-17T3:55:14
应更改为 2002-07-17T03:55:14
。
如果您从 https://gist.github.com/sorawee/e92eada7d3081b308c5e9fefbcb3def3 下载 itunes.xml
并改为使用它,它应该可以正常工作。
您从哪里以及如何获得原件 itunes.xml
?
我正在做 HtDP Exercises, and I'm having trouble on Exercise 200。我按照书上说的做了,但我一直犯同样的错误。无论我尝试什么,我总是得到这个:
read-itunes-as-list: expects a file with XML document as first argument, given "itunes.xml"
我尝试过更改 itunes.xml
的名称和其他一些操作,但它们似乎都失败了。有人知道如何解决这个问题吗?
这是我的代码(到目前为止):
; An LTracks is one of:
; – '()
; – (cons Track LTracks)
; Example:
; (cons (make-track "Wild Child" "Enya" "A Day Without" 227996 2 (make-date 2002 7 17 3 55 14) 20 (make-date 2011 5 17 17 35 13))
; '())
;(define-struct track
; [name artist album time track# added play# played])
; A Track is a structure:
; (make-track String String String N N Date N Date)
; interpretation An instance records in order: the track's
; title, its producing artist, to which album it belongs,
; its playing time in milliseconds, its position within the
; album, the date it was added, how often it has been
; played, and the date when it was last played
; Example:
; (make-track "Wild Child" "Enya" "A Day Without" 227996 2 (make-date 2002 7 17 3 55 14) 20 (make-date 2011 5 17 17 35 13))
;(define-struct date [year month day hour minute second])
; A Date is a structure:
; (make-date N N N N N N)
; interpretation An instance records six pieces of information:
; the date's year, month (between 1 and 12 inclusive),
; day (between 1 and 31), hour (between 0
; and 23), minute (between 0 and 59), and
; second (also between 0 and 59).
; Example:
; (make-date 2019 7 9 20 35 54)
; modify the following to use your chosen name
(define ITUNES-LOCATION "itunes.xml")
; LTracks
(define itunes-tracks
(read-itunes-as-tracks ITUNES-LOCATION))
和itunes.xml
:
<dict>
<key>Track ID</key><integer>442</integer>
<key>Name</key><string>Wild Child</string>
<key>Artist</key><string>Enya</string>
<key>Album</key><string>A Day Without</string>
<key>Genre</key><string>New Age</string>
<key>Kind</key><string>MPEG audio file</string>
<key>Size</key><integer>4562044</integer>
<key>Total Time</key><integer>227996</integer>
<key>Track Number</key><integer>2</integer>
<key>Track Count</key><integer>11</integer>
<key>Year</key><integer>2000</integer>
<key>Date Added</key><date>2002-7-17T3:55:14</date>
<key>Play Count</key><integer>20</integer>
<key>Play Date</key><integer>3388484113</integer>
<key>Play Date UTC</key><date>2011-5-17T17:35:13
</dict>
正如我在评论中提到的,您的 itunes.xml
格式错误。例如,
- 在最后一行的前一行,你有
<date>
但没有相应的结束标记</date>
。 - 日期格式错误。例如,
2002-7-17T3:55:14
应更改为2002-07-17T03:55:14
。
如果您从 https://gist.github.com/sorawee/e92eada7d3081b308c5e9fefbcb3def3 下载 itunes.xml
并改为使用它,它应该可以正常工作。
您从哪里以及如何获得原件 itunes.xml
?