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 验证