Einzelnen Beitrag anzeigen

sushiprinz

Registriert seit: 16. Aug 2004
3 Beiträge
 
Delphi 7 Professional
 
#1

XML-Datei gegen XSD validieren

  Alt 14. Okt 2004, 15:19
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
  Mit Zitat antworten Zitat