/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="state"></param> /// <returns></returns> public override object Deserialize(XmlReader reader, SerializationState state) { object retval; LightSerializationMember serializationMember; ISerializationUnhandledMarkupListener uhm; retval = Activator.CreateInstance(m_Type); state.DeserializationStart(retval); uhm = retval as ISerializationUnhandledMarkupListener; if (reader.AttributeCount > 0) { for (int i = 0; i < reader.AttributeCount; i++) { reader.MoveToAttribute(i); serializationMember = (LightSerializationMember)m_AttributeMembersMap[reader.Name]; if (serializationMember == null) { // Unknown attribute. if (uhm != null) { uhm.UnhandledAttribute(reader.Name, reader.Value); } } else { serializationMember.SetValue(retval, serializationMember.Serializer.Deserialize(reader, state)); } } reader.MoveToElement(); } if (reader.IsEmptyElement) { reader.ReadStartElement(); return(retval); } reader.ReadStartElement(); // Read elements while (true) { XmlReaderHelper.ReadUntilAnyTypesReached(reader, new XmlNodeType[] { XmlNodeType.Element, XmlNodeType.EndElement }); if (reader.NodeType == XmlNodeType.Element) { serializationMember = (LightSerializationMember)m_ElementMembersMap[reader.Name]; if (serializationMember == null) { // Unknown element. } else { serializationMember.SetValue(retval, serializationMember.Serializer.Deserialize(reader, state)); } } else { if (reader.NodeType == XmlNodeType.EndElement) { reader.ReadEndElement(); } else { if (uhm != null) { uhm.UnhandledOther(reader.ReadOuterXml()); } } break; } } state.DeserializationEnd(retval); return(retval); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="state"></param> /// <returns></returns> public override object Deserialize(XmlReader reader, SerializationState state) { object retval; SerializationMemberInfo serializationMember; ISerializationUnhandledMarkupListener uhm; retval = Activator.CreateInstance(m_Type); state.DeserializationStart(retval); uhm = retval as ISerializationUnhandledMarkupListener; if (reader.AttributeCount > 0) { for (int i = 0; i < reader.AttributeCount; i++) { reader.MoveToAttribute(i); if (reader.Prefix == "xmlns") { continue; } if (reader.Prefix.Length > 0) { serializationMember = (SerializationMemberInfo)m_AttributeMembersMap[state.Parameters.Namespaces.GetNamespace(reader.Prefix) + (char)0xff + reader.LocalName]; } else { serializationMember = (SerializationMemberInfo)m_AttributeMembersMap[reader.Name]; } if (serializationMember == null) { // Unknown attribute. if (uhm != null) { uhm.UnhandledAttribute(reader.Name, reader.Value); } } else { serializationMember.SetValue(retval, serializationMember.Serializer.Deserialize(reader, state)); } } reader.MoveToElement(); } if (reader.IsEmptyElement) { reader.ReadStartElement(); return retval; } reader.ReadStartElement(); // Read elements while (true) { XmlReaderHelper.ReadUntilAnyTypesReached(reader, new XmlNodeType[] { XmlNodeType.Element, XmlNodeType.EndElement}); if (reader.NodeType == XmlNodeType.Element) { if (reader.Prefix.Length > 0) { serializationMember = (SerializationMemberInfo)m_ElementMembersMap[state.Parameters.Namespaces.GetNamespace(reader.Prefix) + (char)0xff + reader.LocalName]; } else { serializationMember = (SerializationMemberInfo)m_ElementMembersMap[reader.LocalName]; } if (serializationMember == null) { // Unknown element. reader.Read(); XmlReaderHelper.ReadAndApproachMatchingEndElement(reader); } else { if (serializationMember.SerializeAsValueNodeAttributeName != null && serializationMember.Serializer is TypeSerializerWithSimpleTextSupport) { string s; s = reader.GetAttribute(serializationMember.SerializeAsValueNodeAttributeName); serializationMember.SetValue(retval, ((TypeSerializerWithSimpleTextSupport)(serializationMember.Serializer)).Deserialize(s, state)); XmlReaderHelper.ReadAndConsumeMatchingEndElement(reader); } else { serializationMember.SetValue(retval, serializationMember.Serializer.Deserialize(reader, state)); } } } else { if (reader.NodeType == XmlNodeType.EndElement) { reader.ReadEndElement(); } else { if (uhm != null) { uhm.UnhandledOther(reader.ReadOuterXml()); } } break; } } state.DeserializationEnd(retval); return retval; }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="state"></param> /// <returns></returns> public override object Deserialize(XmlReader reader, SerializationState state) { IList retval = null; if (m_ListType.IsArray) { retval = new ArrayList(); } else { retval = (IList)Activator.CreateInstance(m_ListType); state.DeserializationStart(retval); } // Go thru all elements and deserialize each one. if (reader.IsEmptyElement) { reader.ReadStartElement(); } else { reader.ReadStartElement(); for (;;) { ListItem listItem; XmlReaderHelper.ReadUntilAnyTypesReached(reader, XmlReaderHelper.ElementOrEndElement); if (reader.NodeType == XmlNodeType.Element) { listItem = (ListItem)m_AliasToItemMap[reader.Name]; if (listItem.Attribute != null && listItem.Attribute.SerializeAsValueNode && listItem.Attribute.ValueNodeAttributeName != null && listItem.Serializer is TypeSerializerWithSimpleTextSupport) { string s; s = reader.GetAttribute(listItem.Attribute.ValueNodeAttributeName); retval.Add(((TypeSerializerWithSimpleTextSupport)listItem.Serializer).Deserialize(s, state)); XmlReaderHelper.ReadAndConsumeMatchingEndElement(reader); } else { retval.Add(listItem.Serializer.Deserialize(reader, state)); } } else { if (reader.NodeType == XmlNodeType.EndElement) { reader.ReadEndElement(); } break; } } } if (m_ListType.IsArray) { Array array = Array.CreateInstance(m_ListType.GetElementType(), retval.Count); state.DeserializationStart(retval); retval.CopyTo(array, 0); retval = array; } state.DeserializationEnd(retval); return(retval); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="state"></param> /// <returns></returns> public override object Deserialize(XmlReader reader, SerializationState state) { IList retval = null; if (m_ListType.IsArray) { retval = new ArrayList(); } else { retval = (IList)Activator.CreateInstance(m_ListType); state.DeserializationStart(retval); } // Go thru all elements and deserialize each one. if (reader.IsEmptyElement) { reader.ReadStartElement(); } else { reader.ReadStartElement(); for (;;) { ListItem listItem; XmlReaderHelper.ReadUntilAnyTypesReached(reader, XmlReaderHelper.ElementOrEndElement); if (reader.NodeType == XmlNodeType.Element) { listItem = (ListItem)m_AliasToItemMap[reader.Name]; if (listItem.Attribute != null && listItem.Attribute.SerializeAsValueNode && listItem.Attribute.ValueNodeAttributeName != null && listItem.Serializer is TypeSerializerWithSimpleTextSupport) { string s; s = reader.GetAttribute(listItem.Attribute.ValueNodeAttributeName); retval.Add(((TypeSerializerWithSimpleTextSupport)listItem.Serializer).Deserialize(s, state)); XmlReaderHelper.ReadAndConsumeMatchingEndElement(reader); } else { retval.Add(listItem.Serializer.Deserialize(reader, state)); } } else { if (reader.NodeType == XmlNodeType.EndElement) { reader.ReadEndElement(); } break; } } } if (m_ListType.IsArray) { Array array = Array.CreateInstance(m_ListType.GetElementType(), retval.Count); state.DeserializationStart(retval); retval.CopyTo(array, 0); retval = array; } state.DeserializationEnd(retval); return retval; }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="state"></param> /// <returns></returns> public override object Deserialize(XmlReader reader, SerializationState state) { object retval; SerializationMemberInfo serializationMember; ISerializationUnhandledMarkupListener uhm; retval = Activator.CreateInstance(m_Type); state.DeserializationStart(retval); uhm = retval as ISerializationUnhandledMarkupListener; if (reader.AttributeCount > 0) { for (int i = 0; i < reader.AttributeCount; i++) { reader.MoveToAttribute(i); if (reader.Prefix == "xmlns") { continue; } if (reader.Prefix.Length > 0) { serializationMember = (SerializationMemberInfo)m_AttributeMembersMap[state.Parameters.Namespaces.GetNamespace(reader.Prefix) + (char)0xff + reader.LocalName]; } else { serializationMember = (SerializationMemberInfo)m_AttributeMembersMap[reader.Name]; } if (serializationMember == null) { // Unknown attribute. if (uhm != null) { uhm.UnhandledAttribute(reader.Name, reader.Value); } } else { serializationMember.SetValue(retval, serializationMember.Serializer.Deserialize(reader, state)); } } reader.MoveToElement(); } if (reader.IsEmptyElement) { reader.ReadStartElement(); return(retval); } reader.ReadStartElement(); // Read elements while (true) { XmlReaderHelper.ReadUntilAnyTypesReached(reader, new XmlNodeType[] { XmlNodeType.Element, XmlNodeType.EndElement }); if (reader.NodeType == XmlNodeType.Element) { if (reader.Prefix.Length > 0) { serializationMember = (SerializationMemberInfo)m_ElementMembersMap[state.Parameters.Namespaces.GetNamespace(reader.Prefix) + (char)0xff + reader.LocalName]; } else { serializationMember = (SerializationMemberInfo)m_ElementMembersMap[reader.LocalName]; } if (serializationMember == null) { // Unknown element. reader.Read(); XmlReaderHelper.ReadAndApproachMatchingEndElement(reader); } else { if (serializationMember.SerializeAsValueNodeAttributeName != null && serializationMember.Serializer is TypeSerializerWithSimpleTextSupport) { string s; s = reader.GetAttribute(serializationMember.SerializeAsValueNodeAttributeName); serializationMember.SetValue(retval, ((TypeSerializerWithSimpleTextSupport)(serializationMember.Serializer)).Deserialize(s, state)); XmlReaderHelper.ReadAndConsumeMatchingEndElement(reader); } else { serializationMember.SetValue(retval, serializationMember.Serializer.Deserialize(reader, state)); } } } else { if (reader.NodeType == XmlNodeType.EndElement) { reader.ReadEndElement(); } else { if (uhm != null) { uhm.UnhandledOther(reader.ReadOuterXml()); } } break; } } state.DeserializationEnd(retval); return(retval); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="state"></param> /// <returns></returns> public override object Deserialize(XmlReader reader, SerializationState state) { object retval; LightSerializationMember serializationMember; ISerializationUnhandledMarkupListener uhm; retval = Activator.CreateInstance(m_Type); state.DeserializationStart(retval); uhm = retval as ISerializationUnhandledMarkupListener; if (reader.AttributeCount > 0) { for (int i = 0; i < reader.AttributeCount; i++) { reader.MoveToAttribute(i); serializationMember = (LightSerializationMember)m_AttributeMembersMap[reader.Name]; if (serializationMember == null) { // Unknown attribute. if (uhm != null) { uhm.UnhandledAttribute(reader.Name, reader.Value); } } else { serializationMember.SetValue(retval, serializationMember.Serializer.Deserialize(reader, state)); } } reader.MoveToElement(); } if (reader.IsEmptyElement) { reader.ReadStartElement(); return retval; } reader.ReadStartElement(); // Read elements while (true) { XmlReaderHelper.ReadUntilAnyTypesReached(reader, new XmlNodeType[] { XmlNodeType.Element, XmlNodeType.EndElement}); if (reader.NodeType == XmlNodeType.Element) { serializationMember = (LightSerializationMember)m_ElementMembersMap[reader.Name]; if (serializationMember == null) { // Unknown element. } else { serializationMember.SetValue(retval, serializationMember.Serializer.Deserialize(reader, state)); } } else { if (reader.NodeType == XmlNodeType.EndElement) { reader.ReadEndElement(); } else { if (uhm != null) { uhm.UnhandledOther(reader.ReadOuterXml()); } } break; } } state.DeserializationEnd(retval); return retval; }