csharp MemoryStream中针对XSD的XML验证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp MemoryStream中针对XSD的XML验证相关的知识,希望对你有一定的参考价值。

public void Main()
{


    CloudBlobContainer cloudBlobContainer = new CloudBlobContainer(new Uri("MYURI"));

    var dir = cloudBlobContainer.GetDirectoryReference("xsd/");
    var blockBlob = dir.GetBlockBlobReference("validation_test2.xsd");
    var memoryXSD = new MemoryStream();

    blockBlob.DownloadToStream(memoryXSD);
    memoryXSD.Position = 0;


    // Create the XmlSchemaSet class.
    XmlSchemaSet sc = new XmlSchemaSet();

    // Add the schema to the collection.
    var schema = XmlSchema.Read(memoryXSD, validationEventHandler);
    //TODO Target namespace
    //schema.TargetNamespace = "MYNAMESPACE";
    sc.Add(schema);

    // Set the validation settings.
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.ValidationType = ValidationType.Schema;
    settings.Schemas = sc;
    settings.ValidationEventHandler += new ValidationEventHandler(validationEventHandler);

    // Create the XmlReader object.
    var memoryXML = new MemoryStream();
    var writer = new StreamWriter(memoryXML);
    var s = Dts.Variables["User::XML"].Value.ToString();
    writer.Write(s);
    writer.Flush();
    memoryXML.Position = 0;
    XmlReader reader = XmlReader.Create(memoryXML, settings);

    // Parse the file. 
    Errors = new List<string>();
    while (reader.Read()) ;
    if (Errors.Count > 0)
    {
        Dts.Events.FireError(0, "XSD validation error:", String.Join(Environment.NewLine, Errors.ToArray()), string.Empty, 0);
    }


    Dts.TaskResult = (int)ScriptResults.Success;
}


static void validationEventHandler(object sender, ValidationEventArgs e)
{
    if (e.Severity == XmlSeverityType.Error)
    {
        Errors.Add(e.Message);
    }

}

以上是关于csharp MemoryStream中针对XSD的XML验证的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中针对 xsd 的 XML 验证

是否可以在 Python 中针对 XSD 1.1 验证 XML 文件?

如何使用 MSXML 针对 XML Schema.xsd 验证我自己的 Schema XSD 文件?

在 C# 中针对 XSD 模式验证 json 数据

在 C# 中针对引用的 XSD 验证 XML

PHP libxml 中针对 XSD 的 XML 验证