Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML-Datei gegen XSD validieren (https://www.delphipraxis.net/31834-xml-datei-gegen-xsd-validieren.html)

sushiprinz 14. Okt 2004 15:19


XML-Datei gegen XSD validieren
 
Hallo!

Ich habe anhand mehrerer Threads in diesem Forum folgenden Code zum Einlesen, Validieren und Auslesen
eines Wertes geschrieben:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  xmlDoc: IXMLDOMDocument2;
  xsd: IXMLDOMSchemaCollection2;
  viewer: IXMLDOMNodeList;
begin
  xmlDoc := CoDOMDocument40.Create;
  xsd := CoXMLSchemaCache40.Create;

  xmlDoc.async           := true;
  xmlDoc.resolveExternals := true;
  xmlDoc.validateOnParse := true;

  xsd.add('http://www.xbrl.org/german/ap/ci/2002-02-15','german_ap/german_ap.xsd');
  xsd.validateOnLoad := true;

  xmlDoc.schemas := xsd;

  if OpenDialog1.Execute then begin

    xmlDoc.load(OpenDialog1.FileName);

    if xmlDoc.parseError.errorCode <> 0 then begin
      MessageDlg(xmlDoc.parseError.reason, mtError, [mbOK], 0);
      Application.Terminate;
    end;

    xmlDoc.SetProperty('SelectionNamespaces','xmlns:ns="http://www.xbrl.org/german/ap/ci/2002-02-15"');

    viewer := xmlDoc.documentElement.selectNodes('ns:genInfo.doc.author');
    Edit1.Text := viewer.item[0].text;
    Edit2.Text := viewer.item[0].attributes[0].text;
  end;
end;
Es funktioniert soweit auch ganz gut. Aber es werden alle wohlgeformten XML-Dateien durchgewinkt, egal
ob sie dem Schema 'german_ap.xsd' entsprechen, oder nicht. Wie bekomm ich es hin, dass nur solche Dateien
akzeptiert werden?

Vielen Dank schonmal für die Antworten!

Tobi


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 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