AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Itunes Library auslesen (XML)

Ein Thema von KahPee · begonnen am 6. Mai 2011 · letzter Beitrag vom 6. Mai 2011
Antwort Antwort
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#1

Wie Itunes Library auslesen (XML)

  Alt 6. Mai 2011, 13:18
Hallo,

Itunes legt eine XML-Datei an in der die Informationen zu den Liedern enthalten sind. Dabei existiert zu jedem Lied ein Eintrag ähnlich dem folgenden.
Code:
<key>1924</key>
<dict>
 <key>Track ID</key>
 <integer>1924</integer>
 <key>Name</key>
 <string>Love the Way You Lie</string>
 <key>Artist</key>
 <string>Eminem & Rihanna</string>
 <key>Album Artist</key>
 <string>Eminem</string>
 <key>Album</key>
 <string>Recovery</string>
 <key>Genre</key>
 <string>Hip-Hop/Rap</string>
 <key>Kind</key>
 <string>Gekaufte AAC-Audiodatei</string>
 <key>Size</key>
 <integer>9423634</integer>
 ... hier folgen viele weitere Einträge
</dict>
Ich möchte aus dieser Liste nun bestimmte Informationen auslesen (z.B. Album, Artist,Titel). Wie mache ich das nun? es gibt ja keine Node "Artist", die ich anwählen kann. Über den Index, des Nodes kann ich ja auch nicht gehen. Denn wenn eine Info fehlt, dann fehlt auch der Eintrag und das ganze verschiebt sich. Ich müsste also immer den Index des "key"-nodes rauskriegen und dann den Inhalt des nachfolgenden Nodes?! Allerdings habe ich noch nicht viel mit XML gearbeitet. Wie sind die Befehle die ich dafür verwenden muss? Mit dem mir bekannten "selectsingleNode" geht das ja nicht..

Vielen Dank im Vorraus

Kahoee

Geändert von KahPee ( 6. Mai 2011 um 14:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Wie Itunes Libary auslesen (XML)

  Alt 6. Mai 2011, 13:22
Wieso gehst du nich über die COM-Schnittstelle von iTunes?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.078 Beiträge
 
Delphi 12 Athens
 
#3

AW: Wie Itunes Libary auslesen (XML)

  Alt 6. Mai 2011, 13:23
Du liest den Index des gewünschten Keys aus und nimmst dann einfach den Wert des nachvolgenden Nodes (notfalls noch prüfen, ob das wirklich ein Value ist)

oder man suchst sich den gewünschten Key-Node und nimmt den nächsten Sibling-Node.


Teilweise ließe es sich mit XPath regeln.


Ansonsten kann ich nur eines sagen: Der Typ, welcher dieses entworfen hat, gehört erschossen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Wie Itunes Libary auslesen (XML)

  Alt 6. Mai 2011, 13:30
Habe das bisher alles auf Basis des Tutorials von Christopher Harms gemacht. Wie sehe denn zum Beispiel eine Methode zum Anwählen eines bestimmten ChildNodes basierend auf dem Index aus?

Vielen Dank

Edit: Mit ItunesCom habe ich mich noch nicht beschäftigt. Hast du da nen Link zu einer Dokumentation oder so, sodass ich mir das angucken kann?

Geändert von KahPee ( 6. Mai 2011 um 13:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.078 Beiträge
 
Delphi 12 Athens
 
#5

AW: Wie Itunes Libary auslesen (XML)

  Alt 6. Mai 2011, 14:08
Habe das bisher alles auf Basis des Tutorials von Christopher Harms gemacht. Wie sehe denn zum Beispiel eine Methode zum Anwählen eines bestimmten ChildNodes basierend auf dem Index aus?
Siehe Beitrag #8, dort drüben.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: Wie Itunes Libary auslesen (XML)

  Alt 6. Mai 2011, 14:19
Ich hatte das jetzt so verstanden. Ich schreibe alle SubNodes des Nodes "dict",die den Namen "key" haben, in eine Nodelist.
Das geht ja über
Nodelist:=MainNode.SelectNodes('key'); anschließend gehe ich diese Liste durch und suche nach dem richtigen Wert:
Delphi-Quellcode:
for i:=0 to nodelist.length-1 do
begin
 if nodelist.item[i].text='Artistthen //bin nicht sicher ob man so auf den Wert zugreifen kann
  begin
    //hier muss nun auf den SubNode mit dem Index i*2+1 zugegriffen des Mainnodes (dict-Node) werden
  end;
end;
Wie macht man den Zugriff auf einen Subnode mit einem bestimmten Item. In Beitrag8 wird nur auf das Item in der Liste zugegrifften, die wiederum enthält bei mir aber nur Objekte mit dem Namen "key". Kann man auch eine Liste mit allen Subnodes erstellen?

Gruß KahPee
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Wie Itunes Libary auslesen (XML)

  Alt 6. Mai 2011, 14:34
Ich habe die Lösung gefunden. Der Befehl den ich suche ist:
MainNode.childNodes.item[INDEX].text Damit habe ich ja den gesuchten Zugriff auf einen Node unabhängig vom Namen!

KahPee
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz