如何验证xml对XSD在C#窗体中 [英] How to Validate xml against XSD in C# windows forms

查看:117
本文介绍了如何验证xml对XSD在C#窗体中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

网络上所有 C#代码仅供读取和加载 XML XSD

All the C# codes available over net are just for read and loading XML and XSD.

XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(@"D:\XML\Sample.xml");
xmlDocument.Schemas.Add("http://www.w3.org/2001/XMLSchema", @"D:\XML\Sample.xsd");
xmlDocument.Schemas.Compile();

ValidationEventHandler eventhandler = new ValidationEventHandler(ValidationEventHandler);
xmlDocument.Validate(eventhandler);

if (valid == true)
{
    label1.Text = "Xml Got Validated!!";
}

void ValidationEventHandler(object sender, ValidationEventArgs e)
{
    valid = false;
    switch (e.Severity)
    {
        case XmlSeverityType.Error: label1.Text = "Xml Validation Failed".ToString();
            break;
        case XmlSeverityType.Warning: label1.Text = "Xml Has some warning".ToString();
            break;
    }
}

这实际上并不验证我的 XML 只是读取,即使我不传递强制性的元素它说:ITS有效

This actually is not validating my XML just reading even if I don't pass elements that are mandatory it says: "ITS Valid"

推荐答案

我使用以下内容并且它成功应用验证:

I use the following and it applies validation successfully:

var xsd = new XmlSchemaSet();

using (var ms = new StringReader(Resources.MyXsd))
{
    using (var reader = XmlReader.Create(ms))
    {
        xsd.Add(XmlSchema.Read(reader, delegate { }));
    }
}

var document = XDocument.Parse(text);

document.Validate(
    xsd, (o, e) =>
        {
            if (e.Severity == XmlSeverityType.Error)
            {
                validationMessages.Add(e.Exception.Message);
            }
        }
);

这篇关于如何验证xml对XSD在C#窗体中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆