【发布时间】:2010-09-10 02:50:50
【问题描述】:
我正在使用XDocument.Validate 扩展方法来验证我的实例。无论如何要让 XML 实例对其自己的模式引用负责?这似乎是相当隐含的。不幸的是,简单地将实例加载到 XDocument 似乎并没有隐式执行此验证。
【问题讨论】:
标签: xml validation schema linq-to-xml
我正在使用XDocument.Validate 扩展方法来验证我的实例。无论如何要让 XML 实例对其自己的模式引用负责?这似乎是相当隐含的。不幸的是,简单地将实例加载到 XDocument 似乎并没有隐式执行此验证。
【问题讨论】:
标签: xml validation schema linq-to-xml
如果您想在加载时验证,请尝试使用:
XDocument.Load Method (XmlReader, LoadOptions)
验证XMLReader。
例如,像这样的:
XmlReader reader;
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.ValidationFlags = XmlSchemaValidationFlags.ReportValidationWarnings |
XmlSchemaValidationFlags.ProcessSchemaLocation;
ValidationEventHandler validator = delegate(object sender,
ValidationEventArgs e)
{
Console.WriteLine("{0}: {1}", e.Severity, e.Message);
};
settings.ValidationEventHandler += validator;
settings.CloseInput = true;
StringReader sr = new StringReader(inputXml);
reader = XmlReader.Create(sr, settings);
【讨论】: