Inheritance: XmlReader, IXmlLineInfo
 internal void CachingCallBack(XsdCachingReader cachingReader) {
     this.coreReader = cachingReader.GetCoreReader(); //re-switch the core-reader after caching reader is done
     this.lineInfo = cachingReader.GetLineInfo();
     replayCache = false;
 }
 private XsdCachingReader GetCachingReader() {
     if (cachingReader == null) {
         cachingReader = new XsdCachingReader(coreReader, lineInfo, new CachingEventHandler(CachingCallBack));
     }
     else {
         cachingReader.Reset(coreReader);
     }
     this.lineInfo = cachingReader as IXmlLineInfo;
     return cachingReader;
 }
示例#3
0
        private async Task <Tuple <string, object> > InternalReadContentAsObjectTupleAsync(bool unwrapTypedValue)
        {
            Tuple <string, object> tuple;
            string originalStringValue;

            XmlNodeType nodeType = this.NodeType;

            if (nodeType == XmlNodeType.Attribute)
            {
                originalStringValue = this.Value;
                if (_attributePSVI != null && _attributePSVI.typedAttributeValue != null)
                {
                    if (_validationState == ValidatingReaderState.OnDefaultAttribute)
                    {
                        XmlSchemaAttribute schemaAttr = _attributePSVI.attributeSchemaInfo.SchemaAttribute;
                        originalStringValue = (schemaAttr.DefaultValue != null) ? schemaAttr.DefaultValue : schemaAttr.FixedValue;
                    }

                    tuple = new Tuple <string, object>(originalStringValue, ReturnBoxedValue(_attributePSVI.typedAttributeValue, AttributeSchemaInfo.XmlType, unwrapTypedValue));
                    return(tuple);
                }
                else
                { //return string value
                    tuple = new Tuple <string, object>(originalStringValue, this.Value);
                    return(tuple);
                }
            }
            else if (nodeType == XmlNodeType.EndElement)
            {
                if (_atomicValue != null)
                {
                    originalStringValue = _originalAtomicValueString;

                    tuple = new Tuple <string, object>(originalStringValue, _atomicValue);
                    return(tuple);
                }
                else
                {
                    originalStringValue = string.Empty;

                    tuple = new Tuple <string, object>(originalStringValue, string.Empty);
                    return(tuple);
                }
            }
            else
            {     //Positioned on text, CDATA, PI, Comment etc
                if (_validator.CurrentContentType == XmlSchemaContentType.TextOnly)
                { //if current element is of simple type
                    object value = ReturnBoxedValue(await ReadTillEndElementAsync().ConfigureAwait(false), _xmlSchemaInfo.XmlType, unwrapTypedValue);
                    originalStringValue = _originalAtomicValueString;

                    tuple = new Tuple <string, object>(originalStringValue, value);
                    return(tuple);
                }
                else
                {
                    XsdCachingReader cachingReader = _coreReader as XsdCachingReader;
                    if (cachingReader != null)
                    {
                        originalStringValue = cachingReader.ReadOriginalContentAsString();
                    }
                    else
                    {
                        originalStringValue = await InternalReadContentAsStringAsync().ConfigureAwait(false);
                    }

                    tuple = new Tuple <string, object>(originalStringValue, originalStringValue);
                    return(tuple);
                }
            }
        }
示例#4
0
 private XsdCachingReader GetCachingReader()
 {
     if (_cachingReader == null)
     {
         _cachingReader = new XsdCachingReader(_coreReader, _lineInfo, new CachingEventHandler(CachingCallBack));
     }
     else
     {
         _cachingReader.Reset(_coreReader);
     }
     _lineInfo = _cachingReader as IXmlLineInfo;
     return _cachingReader;
 }
 internal void CachingCallBack(XsdCachingReader cachingReader)
 {
     this.coreReader = cachingReader.GetCoreReader();
     this.lineInfo = cachingReader.GetLineInfo();
     this.replayCache = false;
 }
 private XsdCachingReader GetCachingReader()
 {
     if (this.cachingReader == null)
     {
         this.cachingReader = new XsdCachingReader(this.coreReader, this.lineInfo, new CachingEventHandler(this.CachingCallBack));
     }
     else
     {
         this.cachingReader.Reset(this.coreReader);
     }
     this.lineInfo = this.cachingReader;
     return this.cachingReader;
 }