Possible to validate xml against xsd using code at runtime?

后端 未结 3 1913
一生所求
一生所求 2020-12-14 04:21

I have xml files that I read in at runtime, is is possible to validate the xml against an xsd file at runtime? using c#

3条回答
  •  别那么骄傲
    2020-12-14 04:59

    Try this:

    public void ValidateXmlDocument(
        XmlReader documentToValidate, string schemaPath)
    {
        XmlSchema schema;
        using (var schemaReader = XmlReader.Create(schemaPath))
        {
            schema = XmlSchema.Read(schemaReader, ValidationEventHandler);
        }
    
        var schemas = new XmlSchemaSet();
        schemas.Add(schema);
    
        var settings = new XmlReaderSettings();
        settings.ValidationType = ValidationType.Schema;
        settings.Schemas = schemas;
        settings.ValidationFlags =
            XmlSchemaValidationFlags.ProcessIdentityConstraints |
            XmlSchemaValidationFlags.ReportValidationWarnings;
        settings.ValidationEventHandler += ValidationEventHandler;
    
        using (var validationReader = XmlReader.Create(documentToValidate, settings))
        {
            while (validationReader.Read())
            {
            }
        }
    }
    
    private static void ValidationEventHandler(
        object sender, ValidationEventArgs args)
    {
        if (args.Severity == XmlSeverityType.Error)
        {
            throw args.Exception;
        }
    
        Debug.WriteLine(args.Message);
    }
    

提交回复
热议问题