Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }