Ich bin triying, um eine XML-Datei zu validieren. Ich verwende diesen CodeProblem Validierung einer XML-Datei mit einer lokalen DTD-Datei in C#
XmlReaderSettings settings = new XmlReaderSettings();
settings.ProhibitDtd = false;
settings.ValidationType = ValidationType.DTD;
settings.ValidationEventHandler += new ValidationEventHandler(validationError);
XmlSchemaSet schemas = new XmlSchemaSet();
settings.Schemas = schemas;
XmlReader reader = XmlReader.Create(lblXmlPath.Text, settings);
reader.Settings.Schemas.Add(null, lblDTDPath.Text);
while (reader.Read())
{
// empty by now
}
reader.Close();
Aber in der Zeile "reader.Settings.Schemas.Add (null, lblDTDPath.Text);" Visual Studio zeigt mir diesen Fehler "Aus Sicherheitsgründen ist DTD in diesem XML-Dokument verboten. Um die DTD-Verarbeitung zu aktivieren, setzen Sie die ProhibitDtd-Eigenschaft auf XmlReaderSettings auf false und übergeben Sie die Einstellungen in XmlReader.Create-Methode"
Wie Sie in der Code, ProhibitDtd wird auf false gesetzt (ich habe das auch während des Debugs verifiziert). Ich habe auch versucht, das Schema vor Aufruf an XmlReader.Create() ohne Erfolg hinzuzufügen.
aber ich den Benutzer Wählen Sie aus der HD beide Dateien, die XML und die dtd, und sagen Sie ihm, ob die XML gültig ist oder nicht. Ich bin ziemlich sicher, dass es getan werden kann, aber ich weiß nicht wie :( – Jonathan
Aktualisiert meine Antwort mit einer möglichen Lösung, um die DTD von einer lokalen Datei zu laden. – Geoff