我正在尝试编写一个C#类,它使用位于另一个不在DOCTYPE字符串相对位置的文件夹中的DTD文件来验证xml文件,到目前为止,我的代码是这样的:
var settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;
settings.ValidationType = ValidationType.DTD;
settings.XmlResolver = new XmlUrlResolver();
settings.ValidationEventHandler += new ValidationEventHandler(IsLoaded);
using (var reader = XmlReader.Create(new StringReader(xmlString), settings))
{
while (reader.Read()) { }
reader.Close();
}
到目前为止,这可以很好地从xml文件中包含的DOCTYPE字符串加载DTD文件,但是DTD文件本身必须保存在与程序被执行的位置相关的文件夹中。有没有办法与XmlResolver类混合,我可以要求它从我的硬盘驱动器上的另一个位置获取DTD文件,就像在查找DTD文件而不是使用DOCTYPE字符串时传递的absoute路径一样?