我正在測試以驗證XML文件。我使用這個代碼問題驗證在C中使用本地DTD文件的XML文件
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();
但在該行 「reader.Settings.Schemas.Add(NULL,lblDTDPath.Text);」 Visual Studio中告訴我的錯誤「出於安全原因的DTD此XML文檔中禁止的。爲了使DTD處理設置ProhibitDtd屬性上XmlReaderSettings爲false,並通過設置成XmlReader.Create法」
正如你可以看到的代碼,ProhibitDtd設置爲false(我也在調試過程中驗證過)。我還嘗試在調用XmlReader.Create()之前添加Schema,但沒有成功。
,但我希望用戶從HD中選擇兩個文件,XML和dtd,並告訴他XML是否有效。我很確定它可以完成,但我不知道如何:( – Jonathan 2009-10-02 11:43:33
更新我的aswer與一個可能的解決方案從本地文件加載DTD – Geoff 2009-10-02 12:12:32