private void GetIsDefault()
{
XsdCachingReader cachedReader = _coreReader as XsdCachingReader;
if (cachedReader == null && _xmlSchemaInfo.HasDefaultValue)
{ //Get Isdefault
_coreReader = GetCachingReader();
if (_xmlSchemaInfo.IsUnionType && !_xmlSchemaInfo.IsNil)
{ //If it also union, get the memberType as well
ReadAheadForMemberType();
}
else
{
if (_coreReader.Read())
{
switch (_coreReader.NodeType)
{
case XmlNodeType.Element:
Debug.Assert(false); //Should not happen as the caching reader does not cache elements in simple content
break;
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); //?? pop namespaceManager scope
_originalAtomicValueString = GetOriginalAtomicValueStringOfElement();
if (_xmlSchemaInfo.IsDefault)
{ //The atomicValue returned is a default value
_cachingReader.SwitchTextNodeAndEndElement(_xmlSchemaInfo.XmlType.ValueConverter.ToString(_atomicValue), _originalAtomicValueString);
}
break;
default:
break;
}
}
}
_cachingReader.SetToReplayMode();
_replayCache = true;
}
}