![]() |
Units verfügbar Typen wie zB. IDOMNodeSelect nicht vorhanden
Hallo
ich wollte auch mal eine XML-Datei öffnen, verarbeiten und speichern. Anfangen wollte ich mit einem Beispiel aus dem Forum. Aber: Mir fehlen verschiedene Typen wie IDOMNodeList, IDOMNodeSelect usw. Die Units XMLIntf, XMLDoc und MSXML (MS XML-Parser 4.0) habe ich verfügbar. Was fehlt? Gruß, P. |
Re: Units verfügbar Typen wie zB. IDOMNodeSelect nicht vorha
Du musst erst mal eine TLB importieren.
Menue -> Projekt -> Typbibliothek importieren... "Microsoft XML" auswählen und auf "Unit anlegen" klicken. Bei verschiedenen Versionen würde v4.0 oder v5.0 verwenden. Die erzeugte Unit enthält alle Interfaces und CoClassen, die du brauchst. |
Re: Units verfügbar Typen wie zB. IDOMNodeSelect nicht vorha
Danke,
jedoch, das funktioniert nicht... Ich habe mehrere Klassen erstellt und getestet:
![]() Der String 'NodeSelect' kommt in der erzeugen Unit nie vor. Statt IDOMNodeList habe ich etwas ähnliches gefunden, IXMLDOMNodeList. Hm, k.A., P. |
Re: Units verfügbar Typen wie zB. IDOMNodeSelect nicht vorha
Hallo P.
Du schreibst, dass du schon die benötigten Units hast, aber die fehlenden Interfaces stammen aus der Unit XMLDOM. Kann es sein, dass du diese Unit vergessen hast einzubinden? Du solltest deine Delphi-Version in deinem DP-Profil eintragen. Und nicht unbedingt mischen: MSXML oder (xmldom, xmlintf, xmldoc). Grüße vom marabu |
Re: Units verfügbar Typen wie zB. IDOMNodeSelect nicht vorha
Als Einstieg für MSXML
Delphi-Quellcode:
var
dom : IXMLDOMDocument2; ElemList: IXMLDOMNodeList; begin dom := CoDOMDocument.Create; dom.load('C:\test.XML'); // dokument laden Memo1.Lines.Clear; ElemList := dom.documentElement.childNodes; ShowChilds(ElemList, 1000, 0); // alles rekursiv anzeigen end;
Delphi-Quellcode:
procedure TForm1.ShowChilds(childs: IXMLDOMNodeList; maxcount: Integer;level:Integer);
var i,j,anzahl : Integer; s : string; attr : IXMLDOMNamedNodeMap; node : IXMLDOMNode; begin for i := 0 to childs.length-1 do begin node := childs.item[i]; try s := node.nodevalue; except s := '' end; outputline(node.nodeName+' : '+s, level); attr := node.attributes; if Assigned(attr) then begin for j := 0 to attr.length-1 do begin try outputline(attr.item[j].Get_nodeName+'='+attr.item[j].Get_nodeValue, level); except end; end; end; // rekursiv eine Ebene tiefer ShowChilds(node.childNodes, maxcount, level+1); if i >= maxcount then break; end; end; // Ausgabe im Memo // mit parameter level wird eingerückt procedure TForm1.outputline(const s: string; level: Integer); begin Memo1.Lines.Add(StringOfChar('.', level)+s); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 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