Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }