Как проверить xml против XSD в формах Windows C # - PullRequest
1 голос
/ 29 июня 2011

Все коды C#, доступные через сеть, предназначены только для чтения и загрузки XML и 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 только чтение, даже если яне пропускайте обязательные элементы, это говорит: "ЕГО ВАЛИД"

1 Ответ

0 голосов
/ 29 июня 2011

Я использую следующее, и оно успешно применяет проверку:

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);
            }
        }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...