commandcraxx
Ensign
- Registriert
- Mai 2011
- Beiträge
- 178
Abend Liebe CB'ler,
im Zuge meines Studiums muss ich dieses Jahr eine Hausarbeit zum Thema Java Programmierung ablegen.
Im groben sollen wir die iTunes Musik Datenbank, mit den in der Vorlesung gelernten Techniken, parsen und aufbereiten.
Soweit so gut, allerdings hält sich Apple ja nicht unbedingt an Standards und, wie ich finde, ist das XML File von iTunes die blanke Hölle zum parsen. Hier mal ein Auszug:
Ich habe es schon soweit geschafft, dass ich nur die Trackinfos pro Track parsen kann. Im Grunde genau dass was ich für später brauche. Doch habe ich nun ein Problem. Es tauchen in der Ausgabe leere Nodes auf. Ein Beispiel:
Ich hab echt keine Ahnung woher diese Stammen könnten. Ich bin noch recht unerfahren mit dem Umgang mit dem DOM-Parser. Drum bitte ich um eure Hilfe.
Hier ist mein Code:
im Zuge meines Studiums muss ich dieses Jahr eine Hausarbeit zum Thema Java Programmierung ablegen.
Im groben sollen wir die iTunes Musik Datenbank, mit den in der Vorlesung gelernten Techniken, parsen und aufbereiten.
Soweit so gut, allerdings hält sich Apple ja nicht unbedingt an Standards und, wie ich finde, ist das XML File von iTunes die blanke Hölle zum parsen. Hier mal ein Auszug:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Major Version</key><integer>1</integer>
<key>Minor Version</key><integer>1</integer>
<key>Date</key><date>2012-02-13T17:18:47Z</date>
<key>Application Version</key><string>10.5.3</string>
<key>Features</key><integer>5</integer>
<key>Show Content Ratings</key><true/>
<key>Music Folder</key><string>file://localhost/C:/Users/GESCHWÄRZT/Music/iTunes/iTunes%20Media/</string>
<key>Library Persistent ID</key><string>229EC9EFA268CF7F</string>
<key>Tracks</key>
<dict>
<key>626</key>
<dict>
<key>Track ID</key><integer>626</integer>
<key>Name</key><string>Kalimba</string>
<key>Artist</key><string>Mr. Scruff</string>
<key>Album Artist</key><string>Mr. Scruff</string>
<key>Composer</key><string>A. Carthy and A. Kingslow</string>
<key>Album</key><string>Ninja Tuna</string>
<key>Genre</key><string>Electronic</string>
<key>Kind</key><string>MPEG-Audiodatei</string>
<key>Size</key><integer>8414449</integer>
<key>Total Time</key><integer>348055</integer>
<key>Track Number</key><integer>1</integer>
<key>Year</key><integer>2008</integer>
<key>Date Modified</key><date>2009-07-14T06:32:31Z</date>
<key>Date Added</key><date>2012-02-13T17:13:55Z</date>
<key>Bit Rate</key><integer>192</integer>
<key>Sample Rate</key><integer>44100</integer>
<key>Comments</key><string>Ninja Tune Records</string>
<key>Artwork Count</key><integer>1</integer>
<key>Persistent ID</key><string>89F4CDF8468D8560</string>
<key>Track Type</key><string>File</string>
<key>Location</key><string>file://localhost/C:/Users/Public/Music/Sample%20Music/Kalimba.mp3</string>
<key>File Folder Count</key><integer>-1</integer>
<key>Library Folder Count</key><integer>-1</integer>
</dict>
</dict>
<key>Playlists</key>
Ich habe es schon soweit geschafft, dass ich nur die Trackinfos pro Track parsen kann. Im Grunde genau dass was ich für später brauche. Doch habe ich nun ein Problem. Es tauchen in der Ausgabe leere Nodes auf. Ein Beispiel:
Code:
run:
0:
1: Track ID
2: 626
3:
4: Name
5: Kalimba
6:
7: Artist
8: Mr. Scruff
9:
10: Album Artist
11: Mr. Scruff
12:
13: Composer
14: A. Carthy and A. Kingslow
15:
16: Album
17: Ninja Tuna
18:
19: Genre
20: Electronic
21:
22: Kind
23: MPEG-Audiodatei
24:
25: Size
26: 8414449
27:
28: Total Time
29: 348055
30:
31: Track Number
32: 1
33:
34: Year
35: 2008
36:
37: Date Modified
38: 2009-07-14T06:32:31Z
39:
40: Date Added
41: 2012-02-13T17:13:55Z
42:
43: Bit Rate
44: 192
45:
46: Sample Rate
47: 44100
48:
49: Comments
50: Ninja Tune Records
51:
52: Artwork Count
53: 1
54:
55: Persistent ID
56: 89F4CDF8468D8560
57:
58: Track Type
59: File
60:
61: Location
62: file://localhost/C:/Users/Public/Music/Sample%20Music/Kalimba.mp3
63:
64: File Folder Count
65: -1
66:
67: Library Folder Count
68: -1
69:
# NEXT TRACK #
BUILD SUCCESSFUL (total time: 2 seconds)
Ich hab echt keine Ahnung woher diese Stammen könnten. Ich bin noch recht unerfahren mit dem Umgang mit dem DOM-Parser. Drum bitte ich um eure Hilfe.
Hier ist mein Code:
Code:
private static void parseDocument(Document dom){
//get the root element
Element docEle = dom.getDocumentElement();
//get a nodelist of elements for dict
NodeList nl = docEle.getElementsByTagName("dict");
if(nl != null && nl.getLength() > 0) {
for(int i = 2 ; i < nl.getLength(); i++) {
if(nl.item(i).getTextContent().startsWith("Name")){
break;
}
NodeList TrackInfo = nl.item(i).getChildNodes();
for(int x = 0; x < TrackInfo.getLength(); x++){
System.out.println(x+": "+TrackInfo.item(x).getTextContent());
}
System.out.println("# NEXT TRACK #");
}
}
}
Zuletzt bearbeitet: