1 // This source code is dual-licensed under the Apache License, version 2 // 2.0, and the Mozilla Public License, version 1.1. 3 // 4 // The APL v2.0: 5 // 6 //--------------------------------------------------------------------------- 7 // Copyright (C) 2007-2010 LShift Ltd., Cohesive Financial 8 // Technologies LLC., and Rabbit Technologies Ltd. 9 // 10 // Licensed under the Apache License, Version 2.0 (the "License"); 11 // you may not use this file except in compliance with the License. 12 // You may obtain a copy of the License at 13 // 14 // http://www.apache.org/licenses/LICENSE-2.0 15 // 16 // Unless required by applicable law or agreed to in writing, software 17 // distributed under the License is distributed on an "AS IS" BASIS, 18 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 // See the License for the specific language governing permissions and 20 // limitations under the License. 21 //--------------------------------------------------------------------------- 22 // 23 // The MPL v1.1: 24 // 25 //--------------------------------------------------------------------------- 26 // The contents of this file are subject to the Mozilla Public License 27 // Version 1.1 (the "License"); you may not use this file except in 28 // compliance with the License. You may obtain a copy of the License at 29 // http://www.rabbitmq.com/mpl.html 30 // 31 // Software distributed under the License is distributed on an "AS IS" 32 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the 33 // License for the specific language governing rights and limitations 34 // under the License. 35 // 36 // The Original Code is The RabbitMQ .NET Client. 37 // 38 // The Initial Developers of the Original Code are LShift Ltd, 39 // Cohesive Financial Technologies LLC, and Rabbit Technologies Ltd. 40 // 41 // Portions created before 22-Nov-2008 00:00:00 GMT by LShift Ltd, 42 // Cohesive Financial Technologies LLC, or Rabbit Technologies Ltd 43 // are Copyright (C) 2007-2008 LShift Ltd, Cohesive Financial 44 // Technologies LLC, and Rabbit Technologies Ltd. 45 // 46 // Portions created by LShift Ltd are Copyright (C) 2007-2010 LShift 47 // Ltd. Portions created by Cohesive Financial Technologies LLC are 48 // Copyright (C) 2007-2010 Cohesive Financial Technologies 49 // LLC. Portions created by Rabbit Technologies Ltd are Copyright 50 // (C) 2007-2010 Rabbit Technologies Ltd. 51 // 52 // All Rights Reserved. 53 // 54 // Contributor(s): ______________________________________. 55 // 56 //--------------------------------------------------------------------------- 57 using System; 58 using System.IO; 59 using System.Text; 60 using System.Xml; 61 using System.Xml.Serialization; 62 63 namespace RabbitMQ.Util { 64 ///<summary>Miscellaneous helpful XML utilities.</summary> 65 public class XmlUtil { 66 ///<summary>Private constructor - this class has no instances</summary> XmlUtil()67 private XmlUtil() {} 68 69 ///<summary>Serializes an arbitrary serializable object to an 70 ///XML document.</summary> SerializeObject(Type serializationType, object obj)71 public static XmlDocument SerializeObject(Type serializationType, object obj) { 72 StringWriter writer = new StringWriter(); 73 XmlSerializer serializer = new XmlSerializer(serializationType); 74 serializer.Serialize(writer, obj); 75 XmlDocument doc = new XmlDocument(); 76 doc.Load(new StringReader(writer.ToString())); 77 return doc; 78 } 79 80 ///<summary>Constructs an indenting XmlTextWriter that writes to a 81 ///fresh MemoryStream.</summary> CreateIndentedXmlWriter()82 public static XmlTextWriter CreateIndentedXmlWriter() { 83 return CreateIndentedXmlWriter(new MemoryStream()); 84 } 85 86 ///<summary>Constructs an indenting XmlTextWriter that writes to 87 ///the supplied stream.</summary> CreateIndentedXmlWriter(Stream stream)88 public static XmlTextWriter CreateIndentedXmlWriter(Stream stream) { 89 XmlTextWriter w = new XmlTextWriter(stream, Encoding.UTF8); 90 w.Formatting = Formatting.Indented; 91 return w; 92 } 93 94 ///<summary>Constructs an indenting XmlTextWriter that writes to 95 ///the supplied file name.</summary> CreateIndentedXmlWriter(string path)96 public static XmlTextWriter CreateIndentedXmlWriter(string path) { 97 XmlTextWriter w = new XmlTextWriter(path, Encoding.UTF8); 98 w.Formatting = Formatting.Indented; 99 return w; 100 } 101 } 102 } 103