private StreamErrorType parseStreamErrorType(string s) { s = s.Replace('-', '_').ToUpper(); StreamErrorType streamError = StreamErrorType.UNKNOWN; Enum.TryParse(s, out streamError); return(streamError); }
//--------------------------------------------------------Constructor:----------------------------------------------------------------\\ #region --Constructors-- /// <summary> /// Basic Constructor /// </summary> /// <history> /// 10/11/2017 Created [Fabian Sauter] /// </history> public StreamErrorMessage(XmlNode n) { ERROR_TYPE = StreamErrorType.UNKNOWN; ERROR_TEXT = ""; if (n.HasChildNodes) { foreach (XmlNode n1 in n.ChildNodes) { if (string.Equals(n1.NamespaceURI, Consts.XML_STREAM_ERROR_NAMESPACE)) { ERROR_TYPE = parseStreamErrorType(n1.Name); ERROR_TEXT = n1.InnerXml; return; } } } }
public StreamErrorElement(XmlNode xml, StreamErrorType errorType) : base(xml) { this.errorType = errorType; }
/// <summary> /// Gets a stream:error element for the specified error and diagnostic text /// </summary> /// <param name="type">The type of error as listed in RFC 3920.</param> /// <param name="text">The diagnostic text associated with the error.</param> /// <returns>A new StreamErrorElement for the specified error</returns> public static StreamErrorElement GetStreamErrorElement(StreamErrorType type, string text) { StringWriter xmlString = new StringWriter(); XmlTextWriter writer = new XmlTextWriter(xmlString); writer.WriteStartElement("stream:error"); writer.WriteAttributeString("xmlns:stream", Session.STREAM_NAMESPACE); string errorStr = null; switch(type) { case StreamErrorType.UnsupportedVersion: errorStr = "unsupported-version"; break; //TODO: ... Lots of cases ... } writer.WriteStartElement(errorStr, STREAM_ELEMENT_NAMESPACE); writer.WriteEndElement(); writer.WriteStartElement("text", STREAM_ELEMENT_NAMESPACE); writer.WriteString(text); writer.WriteEndElement(); writer.WriteEndElement(); XmlDocument xml = new XmlDocument(); xml.LoadXml(xmlString.ToString()); return new StreamErrorElement(xml.DocumentElement); }