我正在尝试针对现有的.xsd文件验证现有的.xml文件。原样,这两个文件都在我的 bin 文件夹中。但是我的方法只是找不到我的.xsd文件。它找到.xml文件然后对它进行验证,因为它显然无法找到.xsd文件。我认为这可能是出于以下两个原因之一,
我不应该在 bin 文件中包含.xsd文件或
我没有使用settings.Schemas.Add("VM", "v.config.xsd");
正确添加.xsd文件,因为我不太确定第一个字符串参数" VM"确实。我使用了定义为name =" VM"的参数。在我的v.config.xsd中为此参数。
可能不是因为这两个原因中的任何一个(这是我第一次这样做)所以任何指针都是受欢迎的。这是我的方法:
public void Validate()
{
try
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("VM", "v.config.xsd");
settings.ValidationType = ValidationType.Schema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation;
settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallback);
XmlReader reader = XmlReader.Create("output.xml", settings);
XmlDocument document = new XmlDocument();
document.Load(reader);
ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationCallback);
document.Validate(eventHandler);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
private static void ValidationCallback(object sender, ValidationEventArgs args)
{
if (args.Severity == XmlSeverityType.Warning)
Console.WriteLine("\tWarning: Matching schema not found. No validation occurred." + args.Message);
else
Console.WriteLine("\tValidation error: " + args.Message);
}
返回的错误消息是:
Warning: Matching schema not found. No validation occurred.Could not find schema information for the element 'element1'
Warning: Matching schema not found. No validation occurred.Could not find schema information for the element 'element2'
它为"输出"中的每个元素输出此消息。文件。
答案 0 :(得分:0)
您的应用程序实际上在您的bin文件夹中找到了xsd文件,但正如here所述,方法签名
Settings.Schemas.Add("schema", "v.config.xsd");
尝试根据名为 schema
的架构验证XML如果xml中的架构名称是 urn:pippo ,请尝试使用
Settings.Schemas.Add("urn:pippo", "v.config.xsd");