Delphi-PRAXiS
Seite 2 von 2     12

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Alternative zum MSXML (https://www.delphipraxis.net/20455-alternative-zum-msxml.html)

Jens Schumann 1. Jun 2004 10:21

Re: Alternative zum MSXML
 
Hallo,
evt findet sich ja dort eine Alternative Destructor

mirage228 1. Jun 2004 10:24

Re: Alternative zum MSXML
 
Zitat:

Zitat von Jens Schumann
Hallo,
evt findet sich ja dort eine Alternative Destructor

Ja, Daniel hat sich das anscheinend auch angeschaut:

Zitat:

Zitat von Kommentar auf [url
www.destructor.de][/url]
Zum Glück habe ich einen Teppich hier in meinem Arbeitszimmer – da bin ich nicht hart aufgeschlagen, als ich vor Erstaunen vom Sessel gefallen bin. ;-) Ihre Komponente ist ja schnell wie der Blitz!

Daniel R. Wolf, Hamburg/Germany

:mrgreen:

mfG
mirage228

Fellmer Lloyd 1. Jun 2004 10:35

Re: Alternative zum MSXML
 
"Non-validating XML parser"
-Bringt das DTD denn noch was? :gruebel:

MathiasSimmack 1. Jun 2004 10:36

Re: Alternative zum MSXML
 
Erstaunlich ...
Daniel bei destructor.de
Teppich ... Arbeitszimmer ... Sessel

Aber Gero ... Jerr... na, also der Typ im Keller, der muss im Keller hausen. :mrgreen:

MathiasSimmack 1. Jun 2004 10:43

Re: Alternative zum MSXML
 
Zitat:

Zitat von Fellmer Lloyd
"Non-validating XML parser"
-Bringt das DTD denn noch was? :gruebel:

Äh, ich kann zwar jetzt nur für MS-XML sprechen, aber der dortige Validator ist ja gleich eingebaut und kostet dich im Prinzip ein Lächeln. Wenn deine XML-Datei eine DTD benutzt, dann reicht bspw. folgendes:
Delphi-Quellcode:
  Memo1.Clear;

  xmldoc.load(FileListBox1.Items[FileListBox1.ItemIndex]);

  if(xmldoc.parseError.errorCode <> 0) then
  begin
    Memo1.Lines.LoadFromFile(
      FileListBox1.Items[FileListBox1.ItemIndex]
    );

    MessageDlg(Format('%s in Zeile %d, Position %d' + #13#10 + '%s',
      [xmldoc.parseError.reason,xmldoc.parseError.line,
       xmldoc.parseError.linepos,xmldoc.parseError.srcText]),
      mtError,[mbOk],0);
  end
  else
  begin
    Memo1.Lines.Text := xmldoc.xml;
    MessageDlg('Alles okay',mtInformation,[mbOk],0);
  end;
um Fehler zu finden.

Wenn dein XML-Dokument keine DTD benutzt, bzw. wenn es nicht deins ist, du es aber dennoch gern prüfen würdest, dann geht das bspw. mit einer externen XSD-Datei. Hier ein etwas größerer Auszug:
Delphi-Quellcode:
  // create XSD schema
  xsd := CoXMLSchemaCache40.Create;
  if(xsd = nil) then
  begin
    MessageBox(self.Handle,
      pchar(NOXMLPARSER),
      nil,
      MB_OK or MB_ICONEXCLAMATION);

    fErrorExit := true;
    Application.Terminate;
    exit;
  end;
  xsd.add('',ExtractFilePath(paramstr(0)) + 'MO.xsd');

  // try to create a XML parser
  xmldoc := CoDOMDocument40.Create;

  xmldoc.async           := false;
  xmldoc.resolveExternals := true;
  xmldoc.validateOnParse := true;

  // XSD-Schema zuweisen
  xmldoc.schemas         := xsd;

  xmldoc.load(fSavePath + '\' + DATABASE_FNAME);

  // errors while loading, uh-oh, ... :o(
  if(xmldoc.parseError.errorCode <> 0) then
  begin
    if(MessageBox(self.Handle,pchar(
      Format(XMLDATABASEERROR,[xmldoc.parseError.reason,
        xmldoc.parseError.errorCode,xmldoc.parseError.line,
        xmldoc.parseError.linepos,xmldoc.parseError.srcText])),
      nil,
      MB_YESNO or MB_ICONQUESTION) = IDNO) then
    begin
      fErrorExit := true;
      Application.Terminate;
      exit;
    end;

    xmldoc.loadXML('<?xml version="1.0"?><' + mainnode + '/>')
  end;
Der Rest läuft dann wieder wie gehabt: Sind Fehler drin, werden die angezeigt.

Ansonsten müsstest du noch mal fragen, wenn du speziell etwas zum Thema Validieren wissen willst.

Robert Marquardt 1. Jun 2004 11:04

Re: Alternative zum MSXML
 
Ich moechte hier noch OpenXML in den Ring werfen.
http://www.philo.de/xml/

Fellmer Lloyd 1. Jun 2004 11:05

Re: Alternative zum MSXML
 
Danke für die Erläuterung.
Ich wollte eigetlich nur wissen, ob Omnixlm diese Validation auch unterstützt.
Daher mein Zitat :)

MathiasSimmack 1. Jun 2004 14:53

Re: Alternative zum MSXML
 
Zitat:

Zitat von Robert Marquardt
Ich moechte hier noch OpenXML in den Ring werfen.

Mach doch mal ein Beispiel, @Robert. Ein Links zu einem Tutorial im Web (oder dergleichen) tut´s notfalls auch. Ich habe OpenXML mal auf dem falschen Fuß erwischt. ;) Mir hat´s gereicht, dass ich das nicht einfach benutzen konnte, sondern dass ich zuvor noch diese andere Bibliothek installieren musste.

Und wie sieht´s aus bei Konsolen- und nonVCL-Programmen?


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

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf