/// <summary> /// Loads an XML schema from an embedded resource. /// </summary> /// <param name="Input">Schema Input stream.</param> /// <param name="ResourceName">Resource Name.</param> /// <returns>XML Schema.</returns> /// <exception cref="XmlSchemaException">If a validation exception occurred.</exception> public static XmlSchema LoadSchema(Stream Input, string ResourceName) { XmlValidator Validator = new XmlValidator(ResourceName); XmlSchema Result = XmlSchema.Read(Input, Validator.ValidationCallback); Validator.AssertNoError(); return(Result); }
/// <summary> /// Loads an XML schema from an embedded resource. /// </summary> /// <param name="ResourceName">Resource Name.</param> /// <param name="Assembly">Assembly containing the resource.</param> /// <returns>XML Schema.</returns> /// <exception cref="XmlSchemaException">If a validation exception occurred.</exception> /// <exception cref="IOException">If Resource name is not valid or resource not found.</exception> public static XmlSchema LoadSchema(string ResourceName, Assembly Assembly) { using (Stream f = Assembly.GetManifestResourceStream(ResourceName)) { if (f == null) { throw new ArgumentException("Resource not found: " + ResourceName, nameof(ResourceName)); } XmlValidator Validator = new XmlValidator(ResourceName); XmlSchema Result = XmlSchema.Read(f, Validator.ValidationCallback); Validator.AssertNoError(); return(Result); } }
/// <summary> /// Validates an XML document given a set of XML schemas. /// </summary> /// <param name="ObjectID">Object ID of XML document. Used in case validation warnings are found during validation.</param> /// <param name="Xml">XML document.</param> /// <param name="ExpectedRootElement">Expected Root Element local name.</param> /// <param name="ExpectedRootElementNamespace">Expected Root Element namespace.</param> /// <param name="Schemas">XML schemas.</param> /// <exception cref="XmlSchemaException">If a validation exception occurred.</exception> public static void Validate(string ObjectID, XmlDocument Xml, string ExpectedRootElement, string ExpectedRootElementNamespace, params XmlSchema[] Schemas) { if (!string.IsNullOrEmpty(ExpectedRootElement) && (Xml.DocumentElement is null || Xml.DocumentElement.LocalName != ExpectedRootElement || Xml.DocumentElement.NamespaceURI != ExpectedRootElementNamespace)) { throw new XmlSchemaException("Expected root element is " + ExpectedRootElement + " (" + ExpectedRootElementNamespace + ")"); } foreach (XmlSchema Schema in Schemas) { Xml.Schemas.Add(Schema); } XmlValidator Validator = new XmlValidator(ObjectID); Xml.Validate(Validator.ValidationCallback); Validator.AssertNoError(); }