public XmlSchema GetSchema() { if (_result != null) { return(_result); } _document = XDocument.Load(_xsdSchemaStream); if (_document.Root?.Name != _xmlSchemaNamespace + "schema") { throw new ArgumentException("This is not a valid Xml schema, the root element is expected to be called \"schema\""); } _xmlElementParser = new XmlElementParser(_document); var rootXElements = GetRootElements(); if (!rootXElements.Any()) { throw new InvalidDataException("There is no root element defined within the given schema"); } var result = new XmlSchema { RootElements = new List <XmlElement>() }; foreach (var rootXElement in rootXElements) { var parsedElement = _xmlElementParser.ParseElement(rootXElement); result.RootElements.Add(parsedElement); } return(_result = result); }
private List <XmlElement> GetAllowedChildElements(XElement element) { var xElements = GetChildElementDefinitions(element); var result = new List <XmlElement>(); foreach (var childElement in xElements) { var parsedElement = _xmlElementParser.ParseElement(childElement); result.Add(parsedElement); } result = RemoveDuplicateElementsFromList(result); return(result); }