![]() |
XML ungültige Zeigeroperation
Hallo
ich versuche ein kleines XML auszuwerten, kriges einfach nicht auf die Reihe... XML: (CurrentTrackMetadata)
Code:
Script:
<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">
<item> <dc:title>Elvin Sir Jones</dc:title> <upnp:artist>McCoy Tyner</upnp:artist> <upnp:album>Trident</upnp:album> <res duration="0:05:22" protocolInfo="http-get:*:audio/mpeg:*">http://192.168.1.100:9000/disk/DLNA-PNMP3-OP01-FLAGS01700000/music/O0$1$7I15333/Elvin%20Sir%20Jones.mp3</res> </item> </DIDL-Lite>
Code:
Bin am verzweifeln... :pale:
Procedure TAVTransportService.SplitTrackMetadata;
VAR ItemNode, Itemnode2 : IXMLNode; XMLDoc:TXMLDocument; i,j : integer; begin XMLDoc:=TXMLDocument.Create(nil); XMLDoc.Active:=false; XMLDoc.LoadFromXML(CurrentTrackMetadata); XMLDoc.Active:=True; //ItemNode := XMLDoc.DocumentElement.ParentNode; //Item Parent oder Document ??? ItemNode := xmlDoc.DocumentElement; for I := 0 to ItemNode.ChildNodes.Count-1 do begin Itemnode2 := ItemNode.ChildNodes[i]; if (ItemNode2.GetNodeName = 'upnp:album') and (itemNode2.Text > '') then begin Playalbum := itemNode2.Text; end; if (ItemNode2.GetNodeName = 'upnp:artist') and (itemNode2.Text > '') then begin Playartist := itemNode2.Text; end; end; XMLDoc.Free; end; |
AW: XML ungültige Zeigeroperation
DocumentElement ist das Rootelement DIDL-Lite,
davon das ParentElement wäre dann das Dokument "XMLDoc" selbst und dessen Child dann DIDL-Lite. Und was ist nun das Problem? |
AW: XML ungültige Zeigeroperation
Ich krieg das <item>....</item> nicht in den itemnode
bekomme den Fehler ungültige Zeigeroperaton |
AW: XML ungültige Zeigeroperation
Erstmal, laß das
Delphi-Quellcode:
weg,
XMLDoc.Active:=
denn LoadFromXML erledigt es bereits. (nochmal setzen kann den Inhalt löschen, weil Interfacereferenzen und so, siehe nachfolgend) dann
Delphi-Quellcode:
anstatt TXMLDocument,
XMLDoc: IXMLDocument;
denn sonst bleibt RefCount auf 0 und wird die letzte Node-Referenz gelöscht, ist alles weg.
Delphi-Quellcode:
bzw.
XMLDoc := TXMLDocument.Create(nil); // XMLDoc = TXMLDocument
XMLDoc.LoadFromXML(CurrentTrackMetadata); ItemNode := xmlDoc.DocumentElement; // RecCount geht auf 1 ItemNode := xmlDoc.DocumentElement; // vor dem Ausführen wird die Interfacevariable auf nil gesetzt (Platz für neue Zuweisung), das ganze xmlDoc verschwindet gleich mit und xmlDoc.Irgendwas knallt ...
Delphi-Quellcode:
XMLDoc := TXMLDocument.Create(nil); // XMLDoc = TXMLDocument
XMLDoc.LoadFromXML(CurrentTrackMetadata); ItemNode := xmlDoc.DocumentElement; // RecCount geht ... ItemNode := ItemNode.ChildNodes[0]; // vor dem Ausführen wird ... ...
Delphi-Quellcode:
var
ItemNode, Itemnode2: IXMLNode; XMLDoc: IXMLDocument; //TXMLDocument; i, j: Integer; begin XMLDoc := TXMLDocument.Create(nil); XMLDoc.LoadFromXML(CurrentTrackMetadata); ItemNode := xmlDoc.DocumentElement; // DIDL-Lite ItemNode := ItemNode.ChildNodes[0]; // Item for I := 0 to ItemNode.ChildNodes.Count-1 do begin Itemnode2 := ItemNode.ChildNodes[i]; // dc:title usw. if (ItemNode2.GetNodeName = 'upnp:album') and (itemNode2.Text > '') then Playalbum := itemNode2.Text; if (ItemNode2.GetNodeName = 'upnp:artist') and (itemNode2.Text > '') then Playartist := itemNode2.Text; end; //XMLDoc := nil; end; |
AW: XML ungültige Zeigeroperation
Danke himitsu
ohne Dich hätte ich das nie geschafft! Schön dass es liebe, hilfsbereite Menschen gibt auf diesem Planet :!: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz