如何针对现有.xsd文件验证现有xml文件

时间:2015-08-20 15:15:13

标签: c# xml validation xsd

我正在尝试针对现有的.xsd文件验证现有的.xml文件。原样,这两个文件都在我的 bin 文件夹中。但是我的方法只是找不到我的.xsd文件。它找到.xml文件然后对它进行验证,因为它显然无法找到.xsd文件。我认为这可能是出于以下两个原因之一,

  1. 我不应该在 bin 文件中包含.xsd文件或

  2. 我没有使用settings.Schemas.Add("VM", "v.config.xsd");正确添加.xsd文件,因为我不太确定第一个字符串参数" VM"确实。我使用了定义为name =" VM"的参数。在我的v.config.xsd中为此参数。

  3. 可能不是因为这两个原因中的任何一个(这是我第一次这样做)所以任何指针都是受欢迎的。这是我的方法:

    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'
    

    它为"输出"中的每个元素输出此消息。文件。

1 个答案:

答案 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");