2 // Copyright (C) 2010 Novell Inc. http://novell.com
4 // Permission is hereby granted, free of charge, to any person obtaining
5 // a copy of this software and associated documentation files (the
6 // "Software"), to deal in the Software without restriction, including
7 // without limitation the rights to use, copy, modify, merge, publish,
8 // distribute, sublicense, and/or sell copies of the Software, and to
9 // permit persons to whom the Software is furnished to do so, subject to
10 // the following conditions:
12 // The above copyright notice and this permission notice shall be
13 // included in all copies or substantial portions of the Software.
15 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 using System.Collections.Generic;
30 public static class XamlServices
32 public static Object Load (string fileName)
34 using (var xr = XmlReader.Create (fileName))
38 public static Object Load (Stream stream)
40 return Load (new XamlXmlReader (stream));
43 public static Object Load (TextReader textReader)
45 return Load (new XamlXmlReader (textReader));
48 public static Object Load (XmlReader xmlReader)
50 return Load (new XamlXmlReader (xmlReader));
53 public static Object Load (XamlReader xamlReader)
55 if (xamlReader == null)
56 throw new ArgumentNullException ("xamlReader");
57 var w = new XamlObjectWriter (xamlReader.SchemaContext);
58 Transform (xamlReader, w);
62 public static Object Parse (string xaml)
64 return Load (new StringReader (xaml));
67 public static string Save (object instance)
69 var sw = new StringWriter ();
71 return sw.ToString ();
74 public static void Save (string fileName, object instance)
76 using (var xw = XmlWriter.Create (fileName, new XmlWriterSettings () { OmitXmlDeclaration = true, Indent = true }))
80 public static void Save (Stream stream, object instance)
82 using (var xw = XmlWriter.Create (stream, new XmlWriterSettings () { OmitXmlDeclaration = true, Indent = true }))
86 public static void Save (TextWriter textWriter, object instance)
88 using (var xw = XmlWriter.Create (textWriter, new XmlWriterSettings () { OmitXmlDeclaration = true, Indent = true }))
92 public static void Save (XmlWriter xmlWriter, object instance)
94 Save (new XamlXmlWriter (xmlWriter, new XamlSchemaContext ()), instance);
97 public static void Save (XamlWriter xamlWriter, object instance)
99 if (xamlWriter == null)
100 throw new ArgumentNullException ("xamlWriter");
101 var r = new XamlObjectReader (instance, xamlWriter.SchemaContext);
102 Transform (r, xamlWriter);
105 public static void Transform (XamlReader xamlReader, XamlWriter xamlWriter)
107 Transform (xamlReader, xamlWriter, true);
110 public static void Transform (XamlReader xamlReader, XamlWriter xamlWriter, bool closeWriter)
112 if (xamlReader == null)
113 throw new ArgumentNullException ("xamlReader");
114 if (xamlWriter == null)
115 throw new ArgumentNullException ("xamlWriter");
117 if (xamlReader.NodeType == XamlNodeType.None)
120 while (!xamlReader.IsEof) {
121 xamlWriter.WriteNode (xamlReader);