Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Units verfügbar Typen wie zB. IDOMNodeSelect nicht vorhanden (https://www.delphipraxis.net/70525-units-verfuegbar-typen-wie-zb-idomnodeselect-nicht-vorhanden.html)

Panthrax 31. Mai 2006 13:47


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.

shmia 31. Mai 2006 17:24

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.

Panthrax 31. Mai 2006 18:31

Re: Units verfügbar Typen wie zB. IDOMNodeSelect nicht vorha
 
Danke,

jedoch, das funktioniert nicht... Ich habe mehrere Klassen erstellt und getestet:
  • Microsoft XML, v3.0 (Version 3.0)
  • Microsoft XML, v4.0 (Version 4.0)
  • Microsoft XML, v5.0 (Version 5.0)
  • Microsoft XML, v6.0 (Version 6.0)
Keine der erstellten Units enthält einen Schnittstellentyp wie IDOMNodeSelect oder IDOMNodeList. Der Beispielquelltext hier aus der DP verwendet diese aber.
Der String 'NodeSelect' kommt in der erzeugen Unit nie vor. Statt IDOMNodeList habe ich etwas ähnliches gefunden, IXMLDOMNodeList.

Hm, k.A.,
P.

marabu 31. Mai 2006 18:40

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

shmia 31. Mai 2006 18:47

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 22:51 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