AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Units verfügbar Typen wie zB. IDOMNodeSelect nicht vorhanden
Thema durchsuchen
Ansicht
Themen-Optionen

Units verfügbar Typen wie zB. IDOMNodeSelect nicht vorhanden

Ein Thema von Panthrax · begonnen am 31. Mai 2006 · letzter Beitrag vom 31. Mai 2006
Antwort Antwort
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#1

Units verfügbar Typen wie zB. IDOMNodeSelect nicht vorhanden

  Alt 31. Mai 2006, 13:47
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.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

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

  Alt 31. Mai 2006, 17:24
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.
Andreas
  Mit Zitat antworten Zitat
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#3

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

  Alt 31. Mai 2006, 18:31
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.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

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

  Alt 31. Mai 2006, 18:40
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
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

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

  Alt 31. Mai 2006, 18:47
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;
Andreas
  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 08:11 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