System.Xml.XsdValidatingReader.ReadTillEndElement C# (CSharp) Méthode

ReadTillEndElement() private méthode

private ReadTillEndElement ( ) : object
Résultat object
        private object ReadTillEndElement()
        {
            if (_atomicValue == null)
            {
                while (_coreReader.Read())
                {
                    if (_replayCache)
                    { //If replaying nodes in the cache, they have already been validated
                        continue;
                    }
                    switch (_coreReader.NodeType)
                    {
                        case XmlNodeType.Element:
                            ProcessReaderEvent();
                            goto breakWhile;

                        case XmlNodeType.Text:
                        case XmlNodeType.CDATA:
                            _validator.ValidateText(GetStringValue);
                            break;

                        case XmlNodeType.Whitespace:
                        case XmlNodeType.SignificantWhitespace:
                            _validator.ValidateWhitespace(GetStringValue);
                            break;

                        case XmlNodeType.Comment:
                        case XmlNodeType.ProcessingInstruction:
                            break;

                        case XmlNodeType.EndElement:
                            _atomicValue = _validator.ValidateEndElement(_xmlSchemaInfo);
                            _originalAtomicValueString = GetOriginalAtomicValueStringOfElement();
                            if (_manageNamespaces)
                            {
                                _nsManager.PopScope();
                            }
                            goto breakWhile;
                    }
                    continue;
                breakWhile:
                    break;
                }
            }
            else
            { //atomicValue != null, meaning already read ahead - Switch reader
                if (_atomicValue == this)
                { //switch back invalid marker; dont need it since coreReader moved to endElement
                    _atomicValue = null;
                }
                SwitchReader();
            }
            return _atomicValue;
        }
XsdValidatingReader