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