using System.Collections.Generic;
using System.Xml.Serialization;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO.Compression;
public static class XObjectExtensions
public static XElement SerializeToXElement<T>(this T obj, XContainer parent = null, XmlSerializer serializer = null, XmlSerializerNamespaces ns = null)
throw new ArgumentNullException();
var doc = new XDocument();
using (var writer = doc.CreateWriter())
(serializer ?? new XmlSerializer(obj.GetType())).Serialize(writer, obj, ns ?? NoStandardXmlNamespaces());
public static XmlSerializerNamespaces NoStandardXmlNamespaces()
var ns = new XmlSerializerNamespaces();
public string Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public List<Category> Categories { get; set; }
public string Id { get; set; }
public string Text { get; set; }
public static void Test()
var initialXml = @"<Wiki>
<Categories></Categories>
<WikiEntries></WikiEntries>
var xDoc = XDocument.Parse(initialXml);
static void Test(XDocument xDoc)
WikiEntry wiki = new WikiEntry
Id = Guid.NewGuid().ToString(),
Content = "Simple content here",
Categories = new List<Category>
Id = Guid.NewGuid().ToString(),
Id = Guid.NewGuid().ToString(),
var categories = xDoc.Root.Element("Categories");
foreach (var category in wiki.Categories)
category.SerializeToXElement(categories);
public static void Main()
Console.WriteLine("Roslyn 2.0 Compiler; Environment version: " + Environment.Version);
Console.WriteLine("Uncaught exception: ");