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

ReadTillEndElementAsync() private méthode

private ReadTillEndElementAsync ( ) : Task
Résultat Task
        private async Task<object> ReadTillEndElementAsync()
        {
            if (_atomicValue == null)
            {
                while (await _coreReader.ReadAsync().ConfigureAwait(false))
                {
                    if (_replayCache)
                    { //If replaying nodes in the cache, they have already been validated
                        continue;
                    }
                    switch (_coreReader.NodeType)
                    {
                        case XmlNodeType.Element:
                            await ProcessReaderEventAsync().ConfigureAwait(false);
                            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