如何根据现有的.xsd文件验证现有的xml文件
本文关键字:文件 验证 xml 何根 xsd | 更新日期: 2023-09-27 18:09:01
我试图根据现有的。xsd文件验证一个现有的。xml文件。因此,这两个文件都在我的bin文件夹中。然而,我的方法只是有麻烦找到我的。xsd文件。它找到.xml文件,然后对它进行验证,因为它显然找不到.xsd文件。我认为这可能有两个原因之一,
-
我不应该把。xsd文件放在bin文件或
-
我没有正确地添加。xsd文件与
settings.Schemas.Add("VM", "v.config.xsd");
,因为我不太确定第一个字符串参数"VM"做什么。我使用了v.config.xsd中定义为name="VM"的参数。
可能不是因为这两个原因(这是我第一次这样做),所以任何指针都是受欢迎的。下面是我的方法:
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'
并且它为"output"文件中的每个元素输出此消息
您的应用程序实际上在bin文件夹中找到xsd文件,但是,正如这里所描述的,方法签名
Settings.Schemas.Add("schema", "v.config.xsd");
尝试根据模式模式
验证XML如果xml中的模式名是urn:pippo,尝试使用
Settings.Schemas.Add("urn:pippo", "v.config.xsd");