예제 #1
0
        /// <summary>
        /// Converte a message em uma Xml string.
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        public static string ToXml(ref Message message)
        {
            string messageXml;

            using (var sw = new ACBrStringWriter())
                using (var writer = XmlWriter.Create(sw))
                {
                    message.WriteMessage(writer);
                    writer.Flush();

                    messageXml = sw.GetStringBuilder().ToString();
                }

            var reader = XmlReader.Create(new StringReader(messageXml));
            var copy   = Message.CreateMessage(reader, int.MaxValue, message.Version);

            copy.Headers.Clear();
            copy.Headers.CopyHeadersFrom(message);

            foreach (var property in message.Properties)
            {
                copy.Properties[property.Key] = property.Value;
            }

            message.Close();
            message = copy;

            return(messageXml);
        }
        public static string AsString(this XContainer document, bool identado, bool showDeclaration, Encoding encode)
        {
            var settings = new XmlWriterSettings
            {
                Indent             = identado,
                Encoding           = encode,
                OmitXmlDeclaration = !showDeclaration,
                NamespaceHandling  = NamespaceHandling.OmitDuplicates
            };

            using (var xmlString = new ACBrStringWriter(encode))
                using (var xmlTextWriter = XmlWriter.Create(xmlString, settings))
                {
                    document.WriteTo(xmlTextWriter);
                    xmlTextWriter.Flush();
                    return(xmlString.ToString());
                }
        }
예제 #3
0
        public static void SaveXml(ref Message message, Stream stream)
        {
            using (var sw = new ACBrStringWriter())
                using (var writer = XmlWriter.Create(stream))
                {
                    message.WriteMessage(writer);
                    writer.Flush();
                }

            stream.Position = 0;
            var reader = XmlReader.Create(stream);
            var copy   = Message.CreateMessage(reader, int.MaxValue, message.Version);

            copy.Headers.Clear();
            copy.Headers.CopyHeadersFrom(message);

            copy.Properties.Clear();
            copy.Properties.CopyProperties(message.Properties);

            message.Close();
            message = copy;
        }