private object ReadTypedPrimitive(XmlQualifiedName type, bool elementCanBeType)
{
InitPrimitiveIDs();
object value = null;
if (!IsPrimitiveNamespace(type.Namespace) || (object)type.Name == (object)_urTypeID)
return ReadXmlNodes(elementCanBeType);
if ((object)type.Namespace == (object)_schemaNsID || (object)type.Namespace == (object)_soapNsID || (object)type.Namespace == (object)_soap12NsID)
{
if ((object)type.Name == (object)_stringID ||
(object)type.Name == (object)_normalizedStringID)
value = ReadStringValue();
else if ((object)type.Name == (object)_anyURIID ||
(object)type.Name == (object)_durationID ||
(object)type.Name == (object)_ENTITYID ||
(object)type.Name == (object)_ENTITIESID ||
(object)type.Name == (object)_gDayID ||
(object)type.Name == (object)_gMonthID ||
(object)type.Name == (object)_gMonthDayID ||
(object)type.Name == (object)_gYearID ||
(object)type.Name == (object)_gYearMonthID ||
(object)type.Name == (object)_IDID ||
(object)type.Name == (object)_IDREFID ||
(object)type.Name == (object)_IDREFSID ||
(object)type.Name == (object)_integerID ||
(object)type.Name == (object)_languageID ||
(object)type.Name == (object)_nameID ||
(object)type.Name == (object)_NCNameID ||
(object)type.Name == (object)_NMTOKENID ||
(object)type.Name == (object)_NMTOKENSID ||
(object)type.Name == (object)_negativeIntegerID ||
(object)type.Name == (object)_nonPositiveIntegerID ||
(object)type.Name == (object)_nonNegativeIntegerID ||
(object)type.Name == (object)_NOTATIONID ||
(object)type.Name == (object)_positiveIntegerID ||
(object)type.Name == (object)_tokenID)
value = CollapseWhitespace(ReadStringValue());
else if ((object)type.Name == (object)_intID)
value = XmlConvert.ToInt32(ReadStringValue());
else if ((object)type.Name == (object)_booleanID)
value = XmlConvert.ToBoolean(ReadStringValue());
else if ((object)type.Name == (object)_shortID)
value = XmlConvert.ToInt16(ReadStringValue());
else if ((object)type.Name == (object)_longID)
value = XmlConvert.ToInt64(ReadStringValue());
else if ((object)type.Name == (object)_floatID)
value = XmlConvert.ToSingle(ReadStringValue());
else if ((object)type.Name == (object)_doubleID)
value = XmlConvert.ToDouble(ReadStringValue());
else if ((object)type.Name == (object)_decimalID)
value = XmlConvert.ToDecimal(ReadStringValue());
else if ((object)type.Name == (object)_dateTimeID)
value = ToDateTime(ReadStringValue());
else if ((object)type.Name == (object)_qnameID)
value = ReadXmlQualifiedName();
else if ((object)type.Name == (object)_dateID)
value = ToDate(ReadStringValue());
else if ((object)type.Name == (object)_timeID)
value = ToTime(ReadStringValue());
else if ((object)type.Name == (object)_unsignedByteID)
value = XmlConvert.ToByte(ReadStringValue());
else if ((object)type.Name == (object)_byteID)
value = XmlConvert.ToSByte(ReadStringValue());
else if ((object)type.Name == (object)_unsignedShortID)
value = XmlConvert.ToUInt16(ReadStringValue());
else if ((object)type.Name == (object)_unsignedIntID)
value = XmlConvert.ToUInt32(ReadStringValue());
else if ((object)type.Name == (object)_unsignedLongID)
value = XmlConvert.ToUInt64(ReadStringValue());
else if ((object)type.Name == (object)_hexBinaryID)
value = ToByteArrayHex(false);
else if ((object)type.Name == (object)_base64BinaryID)
value = ToByteArrayBase64(false);
else if ((object)type.Name == (object)_base64ID && ((object)type.Namespace == (object)_soapNsID || (object)type.Namespace == (object)_soap12NsID))
value = ToByteArrayBase64(false);
else
value = ReadXmlNodes(elementCanBeType);
}
else if ((object)type.Namespace == (object)_schemaNs2000ID || (object)type.Namespace == (object)_schemaNs1999ID)
{
if ((object)type.Name == (object)_stringID ||
(object)type.Name == (object)_normalizedStringID)
value = ReadStringValue();
else if ((object)type.Name == (object)_anyURIID ||
(object)type.Name == (object)_anyURIID ||
(object)type.Name == (object)_durationID ||
(object)type.Name == (object)_ENTITYID ||
(object)type.Name == (object)_ENTITIESID ||
(object)type.Name == (object)_gDayID ||
(object)type.Name == (object)_gMonthID ||
(object)type.Name == (object)_gMonthDayID ||
(object)type.Name == (object)_gYearID ||
(object)type.Name == (object)_gYearMonthID ||
(object)type.Name == (object)_IDID ||
(object)type.Name == (object)_IDREFID ||
(object)type.Name == (object)_IDREFSID ||
(object)type.Name == (object)_integerID ||
(object)type.Name == (object)_languageID ||
(object)type.Name == (object)_nameID ||
(object)type.Name == (object)_NCNameID ||
(object)type.Name == (object)_NMTOKENID ||
(object)type.Name == (object)_NMTOKENSID ||
(object)type.Name == (object)_negativeIntegerID ||
(object)type.Name == (object)_nonPositiveIntegerID ||
(object)type.Name == (object)_nonNegativeIntegerID ||
(object)type.Name == (object)_NOTATIONID ||
(object)type.Name == (object)_positiveIntegerID ||
(object)type.Name == (object)_tokenID)
value = CollapseWhitespace(ReadStringValue());
else if ((object)type.Name == (object)_intID)
value = XmlConvert.ToInt32(ReadStringValue());
else if ((object)type.Name == (object)_booleanID)
value = XmlConvert.ToBoolean(ReadStringValue());
else if ((object)type.Name == (object)_shortID)
value = XmlConvert.ToInt16(ReadStringValue());
else if ((object)type.Name == (object)_longID)
value = XmlConvert.ToInt64(ReadStringValue());
else if ((object)type.Name == (object)_floatID)
value = XmlConvert.ToSingle(ReadStringValue());
else if ((object)type.Name == (object)_doubleID)
value = XmlConvert.ToDouble(ReadStringValue());
else if ((object)type.Name == (object)_oldDecimalID)
value = XmlConvert.ToDecimal(ReadStringValue());
else if ((object)type.Name == (object)_oldTimeInstantID)
value = ToDateTime(ReadStringValue());
else if ((object)type.Name == (object)_qnameID)
value = ReadXmlQualifiedName();
else if ((object)type.Name == (object)_dateID)
value = ToDate(ReadStringValue());
else if ((object)type.Name == (object)_timeID)
value = ToTime(ReadStringValue());
else if ((object)type.Name == (object)_unsignedByteID)
value = XmlConvert.ToByte(ReadStringValue());
else if ((object)type.Name == (object)_byteID)
value = XmlConvert.ToSByte(ReadStringValue());
else if ((object)type.Name == (object)_unsignedShortID)
value = XmlConvert.ToUInt16(ReadStringValue());
else if ((object)type.Name == (object)_unsignedIntID)
value = XmlConvert.ToUInt32(ReadStringValue());
else if ((object)type.Name == (object)_unsignedLongID)
value = XmlConvert.ToUInt64(ReadStringValue());
else
value = ReadXmlNodes(elementCanBeType);
}
else if ((object)type.Namespace == (object)_schemaNonXsdTypesNsID)
{
if ((object)type.Name == (object)_charID)
value = ToChar(ReadStringValue());
else if ((object)type.Name == (object)_guidID)
value = new Guid(CollapseWhitespace(ReadStringValue()));
else if ((object)type.Name == (object)_timeSpanID)
value = XmlConvert.ToTimeSpan(ReadStringValue());
else
value = ReadXmlNodes(elementCanBeType);
}
else
value = ReadXmlNodes(elementCanBeType);
return value;
}