Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Simple XML Datei darstellen (https://www.delphipraxis.net/134709-simple-xml-datei-darstellen.html)

alzaimar 27. Mai 2009 14:37

Re: Simple XML Datei darstellen
 
Larsi, mir scheint, als ob Du weder die F1-Taste, noch Google kennst. Wenn das Dokument nicht aktiv (engl: 'active') ist, dann könnte das auf eine besondere Eigenschaft (engl: 'Property') der Klasse hinweisen, die irgendetwas mit dieser Meldung zu tun hat. Da zudem in der Meldung steht, dass das Dokument 'nicht' aktiv ist (sonst sind keine weiteren Werte zu sehen), könnte es sich also um einen Wahrheitswert (engl: 'boolean') handeln.

Brauchst Du noch mehr Unterstützung?

jaenicke 27. Mai 2009 14:40

Re: Simple XML Datei darstellen
 
Und ansonsten: Wie wäre es so?
Delphi-Quellcode:
var
  MyXml: IXMLDocument;
  HttpLoader: TIdHTTP;
  MemStream: TMemoryStream;
  CurrentNode: IXMLNode;
begin
  MyXml := NewXMLDocument('');
  MemStream := TMemoryStream.Create;
  try
    HttpLoader := TIdHTTP.Create;
    try
      HttpLoader.Get('http://xml.utrace.de/?query=www.utrace.de', MemStream);
    finally
      HttpLoader.Free;
    end;
    MemStream.Position := 0;
    MyXml.LoadFromStream(MemStream);
  finally
    MemStream.Free;
  end;
  CurrentNode := MyXml.ChildNodes.FindNode('results');
  if CurrentNode <> nil then
    CurrentNode := CurrentNode.ChildNodes.FindNode('result');
  if CurrentNode <> nil then
    ShowMessage(CurrentNode.ChildNodes.FindNode('ip').Text);

himitsu 27. Mai 2009 16:06

Re: Simple XML Datei darstellen
 
[werbung]
Hier im Forum suchenhimXML
Delphi-Quellcode:
Var XML: TXMLFile;

XML := TXMLFile.Create;
XML.asXML := MyIdHttp.Get('http://...');
With XML.RootNode.Node['result'] do Begin //With XML.Nodes['results\result'] do Begin
  S := Node['ip'].Data;
  S := Node['host'].Data;
  //...
End;
XML.Free;
[/werbung]

und mit MS-Mitteln, eventuell auch so ähnlich
Delphi-Quellcode:
Var XML: IXMLDocument; // Var XML: TXMLDocument;

XML := TXMLDocument.Create(nil);
XML.Active := True;
XML.LoadFromXML(MyIdHttp.Get('http://...'));
With XML.DocumentElement.ChildNodes['result'] do Begin
  S := ChildNodes['ip'].Text;
  S := ChildNodes['host'].Text;
  //...
End;
//XML.Free;

mjustin 27. Mai 2009 16:54

Re: Simple XML Datei darstellen
 
Zitat:

und mit MS-Mitteln, eventuell auch so ähnlich
Delphi-Quellcode:
Var XML: IXMLDocument; // Var XML: TXMLDocument;

TXMLDocument ist nicht unbedingt MSXML. Es kommt darauf an, welchen DOM Vendor man aktiviert, es kann z.B. auch Open XML sein, der standardmäßig auch in Delphi enthalten ist. Open XML arbeitet ohne externe DLL Abhängigkeiten, bietet aber afaik die gleiche Funktionalität.

Cheers,

himitsu 27. Mai 2009 17:49

Re: Simple XML Datei darstellen
 
hmmmm ... das TXMLDocument von Delphi kapselt eigentlich nur das im Windows installierte MSXML.
man kann es zwar umstellen, indem man ihm einen anderen DOMVendor zuweißt (also auf Irgendwas, welches die IXMLDocument-Schnittstelle unterstützt)

OmniXML ist etwa mit den selben Schnittstellen definiert und kann entweder eine eigene DOM nutzen
oder auch nur an das MSXML weiterleiten.


(soweit ich das verstanden hab)

mjustin 27. Mai 2009 18:02

Re: Simple XML Datei darstellen
 
Zitat:

Zitat von himitsu
hmmmm ... das TXMLDocument von Delphi kapselt eigentlich nur das im Windows installierte MSXML.

TXMLDocument ist in der unit XMLDoc deklariert, diese ist unabhängig vom DOMVendor. Welcher verwendet wird, hängt nur davon ab, welche unit man zusätzlich einbindet: wenn man die Unit msxmldom benutzt, registriert sich der MSXML Parser. Bindet man oxmldom ein, der OpenXML Parser. Und mit xercesxmldom wird der Xerces Parser verwendet.

Die IDE bevorzugt msxmldom, indem sie die Unit msxmldom in die uses Liste einfügt, wenn man eine TXMLDocument Komponente auf ein Formular legt und dann kompiliert.

Wenn man ohne Formular arbeitet und die Komponente zur Laufzeit erzeugt, muss man neben XMLdoc.pas noch entweder msxmldom oder oxmldom oder xercesxmldom.pas einbinden.

Die DOM Implementationen registrieren sich automatisch als DOM Vendor (im initialization Abschnitt).

TXMLDocument ist sozusagen nur der abstrakte Container für eine der konkreten Implementierungen.

Satty67 27. Mai 2009 19:13

Re: Simple XML Datei darstellen
 
Also ganz egal wie TXMLDocument funktioniert (manchmal auf anderen Rechnern plötzlich nicht)...

himXML hat meiner Meinung nach für Einsteiger durchaus Vorteile.

- Nur simples Unit einbinden ohne Rahmenbedingungen beachten zu müssen.
- einfach (ich finde sogar sehr einfach) zu bedienen
- Der Programmiert tummelt sich hier (für bohrende Fragen) im Forum rum ;)

himitsu 27. Mai 2009 22:11

Re: Simple XML Datei darstellen
 
hab mal in mein Testprojekt Xerces und OpenXML eingebaut
und ich muß sagen ... die stürzen beide ab :shock:

ich lad es demnächst nochma hoch,
dann kann ja jeder mal nachsehn ... vielleicht findet ja wer den "Fehler"
> also im nächsten Update vom himXML > Datei CheckLibs.dpr

himitsu 28. Mai 2009 09:15

Re: Simple XML Datei darstellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
OK, mit'm nächsten Update wird es noch nichts, aber hier mal das Testprogramm.

Keine AHnung, ob man da was anders machen muß, aber ich hab diese Libs genauso behandelt wie MSXML (es läuft sogar über den selben Code)
und werd' mit Exceptions zugemüllt

auch wenn ich schonmal sagen muß, das was davon läuft, lief zumindestens etwas schneller/besser als MSXML :-D

nötig: himXML (da es in dem, zum himXML gehörenden Testprogramm nicht vorgesehn ist, dieses abzuschalten)
> himXML (Download)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:01 Uhr.
Seite 2 von 2     12   

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