PageRenderTime 58ms CodeModel.GetById 31ms RepoModel.GetById 0ms app.codeStats 0ms

/HW_XML/Parsers/HW_XML_Parsers/15.XSDValidation/XSDValidation.cs

https://github.com/bankova/Databases
C# | 61 lines | 53 code | 8 blank | 0 comment | 5 complexity | be00620aa8d4bc5a49beefc94375a497 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Xml;
  8. using System.Xml.Linq;
  9. using System.Xml.Schema;
  10. class XSDValidation
  11. {
  12. private static bool isValid=true;
  13. static void Main()
  14. {
  15. string xsdFilePathInvalid = "../../catalogueInvalid.xsd";
  16. string xmlFilePathInvalid = "../../catalogueInvalidxml.xml";
  17. string xsdFilePathValid = "../../catalogue.xsd";
  18. string xmlFilePathValid = "../../catalogue.xml";
  19. ValidateXmlAgainstXSD(xsdFilePathValid, xmlFilePathValid);
  20. ValidateXmlAgainstXSD(xsdFilePathInvalid, xmlFilePathInvalid);
  21. }
  22. private static void ValidateXmlAgainstXSD(string xsdFilePath, string xmlFilePath)
  23. {
  24. XmlReaderSettings settings = new XmlReaderSettings();
  25. settings.Schemas.Add(null, xsdFilePath);
  26. settings.ValidationType = ValidationType.Schema;
  27. settings.ValidationEventHandler += Handler;
  28. XmlDocument document = new XmlDocument();
  29. document.Load(xmlFilePath);
  30. XmlReader rdr = XmlReader.Create(new StringReader(document.InnerXml), settings);
  31. while (rdr.Read())
  32. {
  33. }
  34. if (isValid)
  35. {
  36. Console.WriteLine("The document {0} validated against {1} is valid.", xmlFilePath, xsdFilePath);
  37. }
  38. else
  39. {
  40. Console.WriteLine("The document {0} validated against {1} is not valid.", xmlFilePath, xsdFilePath);
  41. }
  42. }
  43. private static void Handler(object sender, ValidationEventArgs e)
  44. {
  45. isValid = false;
  46. if (e.Severity == XmlSeverityType.Error || e.Severity ==
  47. XmlSeverityType.Warning)
  48. System.Diagnostics.Trace.WriteLine(
  49. String.Format("Line: {0}, Position: {1} \"{2}\"",
  50. e.Exception.LineNumber, e.Exception.LinePosition,
  51. e.Exception.Message));
  52. }
  53. }