/// <summary> /// Deserializes the specified XML reader. /// </summary> /// <param name="xmlReader">The XML reader.</param> public override void Deserialize(XmlReader xmlReader) { base.Deserialize(xmlReader); do { if (xmlReader.NodeType == XmlNodeType.EndElement && !"SourceField".Equals(xmlReader.Name) || xmlReader.IsEmptyElement) { return; } if (xmlReader.NodeType == XmlNodeType.Element && "SourceField".Equals(xmlReader.Name)) { var field = new SourceField(this); field.Deserialize(xmlReader); Fields.Add(field); } } while (xmlReader.Read()); }
/// <summary> /// De-serializes the specified XML reader. /// </summary> /// <param name="xmlReader">The XML reader.</param> public void Deserialize(XmlReader xmlReader) { Id = Guid.Parse(xmlReader.GetAttribute("id")); Name = xmlReader.GetAttribute("name"); DataType = (NodeDataType)Enum.Parse(typeof(NodeDataType), xmlReader.GetAttribute("dataType"), false); InnerName = xmlReader.GetAttribute("innerName"); SetName = xmlReader.GetAttribute("setName"); SystemName = xmlReader.GetAttribute("systemName"); ObjectName = xmlReader.GetAttribute("objectName"); UniqueName = xmlReader.GetAttribute("uniqueName"); //for backward compatibility with previously saved xml var param = xmlReader.GetAttribute("keepSubfieldsAlive"); KeepSubfieldsAlive = param != null && Convert.ToBoolean(param); param = xmlReader.GetAttribute("hideConnector"); HideConnector = param != null && Convert.ToBoolean(param); param = xmlReader.GetAttribute("isGroupingField"); IsGroupingField = param != null && Convert.ToBoolean(param); param = xmlReader.GetAttribute("isGroupCollapsed"); IsGroupCollapsed = param != null && Convert.ToBoolean(param); if (!"ConnectorOut".Equals(xmlReader.Name)) { xmlReader.ReadToFollowing("ConnectorOut"); } ConnectorOut.Deserialize(xmlReader); while (xmlReader.Read()) { if (xmlReader.NodeType == XmlNodeType.Element && "AdditionalInfo".Equals(xmlReader.Name)) { try { if (AdditionalInfo == null) AdditionalInfo = Activator.CreateInstance(Type.GetType(xmlReader.GetAttribute("Type"))) as IExpressionFieldInfo; AdditionalInfo.Deserialize(xmlReader); } catch (Exception) { } } else if (xmlReader.NodeType == XmlNodeType.EndElement && "SourceField".Equals(xmlReader.Name) || xmlReader.IsEmptyElement) { return; } else if (xmlReader.NodeType == XmlNodeType.Element && "Subfields".Equals(xmlReader.Name)) { do { if (xmlReader.NodeType == XmlNodeType.EndElement && !"Subfields".Equals(xmlReader.Name)) { return; } if (xmlReader.NodeType == XmlNodeType.Element && "SourceField".Equals(xmlReader.Name)) { var field = new SourceField(ConnectorOut.Owner); field.Deserialize(xmlReader); field.ParentField = this; _subfields.Add(field); } } while (xmlReader.Read()); } } }