如何在C#中针对DTD验证XML文档?

Mat*_*hew 5 c# xml validation dtd

我不想做任何花哨的事情,我只想确保文档有效,如果没有,则打印错误信息.谷歌向我指出了这一点,但似乎XmlValidatingReader已经过时了(至少,这是MonoDevelop告诉我的).

编辑:我正在尝试Mehrdad的提示,但我遇到了麻烦.我想我已经掌握了大部分内容,但我无法在任何地方找到OnValidationEvent.我从哪里获得OnValidationEvent?

XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.DTD;
settings.ValidationEventHandler += new ValidationEventHandler(/*trouble is here*/);
XmlReader validatingReader = XmlReader.Create(fileToLoad, settings);
Run Code Online (Sandbox Code Playgroud)

Meh*_*ari 6

您应该构造一个适当的对象并将其作为参数传递给方法,而不是直接创建XmlValidatingReaderXmlReaderSettingsXmlReader.Create

var settings = new XmlReaderSettings { ValidationType = ValidationType.DTD };
settings.ValidationEventHandler += new ValidationEventHandler(OnValidationEvent);
var reader = XmlReader.Create("file.xml", settings);
Run Code Online (Sandbox Code Playgroud)

其余不变。

PSOnValidationEvent是您声明用于处理验证事件的方法的名称。显然,如果您不想订阅由XmlReader.