-
Notifications
You must be signed in to change notification settings - Fork 1
/
ValidacaoXML.cs
58 lines (53 loc) · 1.82 KB
/
ValidacaoXML.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*
Classe com as funções de validação de documento XML através de um schema .xsd
Autor: Vinícius Rossmann Nunes
Ultima modificação: outubro/2020 - implementado
*/
using System.Xml;
using System.Xml.Schema;
namespace DFe_Util_HM
{
public class ValidacaoXML
{
private bool falhou; //Armazena se o validação falhou
private string motivos; //Armazena os erros encontrados
private int numErros; //Armazena o número de erros encontrados
public bool Falhou
{
get { return falhou; }
}
public string Motivos
{
get { return motivos; }
}
public int NumErros
{
get { return numErros; }
}
//Valida um documento xml através de um schema XSD
public bool ValidarXml(XmlDocument doc, string schemaFilename)
{
XmlNodeReader nodeReader = new XmlNodeReader(doc);
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
XmlSchemaSet schemas = new XmlSchemaSet();
settings.Schemas = schemas;
schemas.Add(null, schemaFilename);
settings.ValidationEventHandler += ValidationEventHandler;
XmlReader validator = XmlReader.Create(nodeReader, settings);
falhou = false;
numErros = 0;
try { while (validator.Read()) { } }
catch { falhou = true; }
finally { validator.Close(); }
return !falhou;
}
//Evento chamado quando encontra um erro no documento xml
private void ValidationEventHandler(object sender, ValidationEventArgs args)
{
falhou = true;
numErros++;
motivos += args.Message;
}
}
}