/// <summary> /// Deserializes an XML Error file. /// </summary> /// <param name="reader">XML Error file.</param> /// <returns>ResponseException.</returns> public static ResponseException Deserialize(XmlReader reader) { ResponseException lResult = null; if (reader.IsStartElement(DTD.Error.TagError)) { lResult = new ResponseException(); // Read the Attributes from Error element. lResult.SetErrorType(reader.GetAttribute(DTD.Error.TagType)); lResult.Number = int.Parse(reader.GetAttribute(DTD.Error.TagNumber)); if (!reader.IsEmptyElement) { reader.ReadStartElement(DTD.Error.TagError); do { #region Read Message Element. if (reader.IsStartElement(DTD.Error.TagErrorMessage)) { if (!reader.IsEmptyElement) { lResult.SetMessage(reader.ReadString()); } } #endregion Read Message Element. else { #region Read the Error.Params. if (reader.IsStartElement(DTD.Error.TagErrorParams)) { lResult.Parameters = XMLErrorParamsSerialize.Deserialize(reader.ReadSubtree(), lResult.Parameters); } #endregion Read the Error.Params. else { #region Read the Trace Items. if (reader.IsStartElement(DTD.Error.TagErrorTrace)) { lResult.Traces = XMLErrorTracesSerialize.Deserialize(reader.ReadSubtree(), null); } #endregion Read the Trace Items. else { #region Read the Changed Items. if (reader.IsStartElement(DTD.Error.TagChangedItems)) { lResult.ChangedItems = XMLChangedItemsSerializer.Deserialize(reader.ReadSubtree());; } #endregion Read the Changed Items. else { #region Read the <?>. reader.Skip(); if (reader.NodeType == XmlNodeType.None) { break; } else { continue; } #endregion Read the <?>. } } } } } while (reader.Read()); } } return(lResult); }
/// <summary> /// Deserializes a trace from an XML Error file. /// </summary> /// <param name="reader">XML Error file.</param> /// <param name="trace">Trace to obtain.</param> /// <returns>Trace.</returns> public static Trace Deserialize(XmlReader reader, Trace trace) { if (reader.IsStartElement(DTD.Error.ErrorTrace.TagErrorTraceItem)) { if (trace == null) { trace = new Trace(); } // Read Attributes. trace.Number = reader.GetAttribute(DTD.Error.ErrorTrace.TagNumber); switch (reader.GetAttribute(DTD.Error.ErrorTrace.TagType)) { case ResponseException.ErrorExternal: trace.Type = ErrorTraceType.External; break; case ResponseException.ErrorModel: trace.Type = ErrorTraceType.Model; break; } if (!reader.IsEmptyElement) { reader.ReadStartElement(); do { if (reader.IsStartElement(DTD.Error.TagErrorMessage)) { if (!reader.IsEmptyElement) { trace.Message = reader.ReadString(); } else { reader.Skip(); if (reader.NodeType == XmlNodeType.None) { break; } else { continue; } } } else { if (reader.IsStartElement(DTD.Error.TagErrorParams)) { trace.Parameters = XMLErrorParamsSerialize.Deserialize(reader.ReadSubtree(), null); } else { reader.Skip(); if (reader.NodeType == XmlNodeType.None) { break; } else { continue; } } } } while (reader.Read()); } else { reader.Skip(); } } return(trace); }