using System.Xml.Serialization;
using System.Collections.Generic;
[XmlElement(IsNullable=true)]
public string ElementOne { get; set; }
public string ElementTwo { get; set; }
public string ElementThree { get; set; }
public string ElementFour { get; set; }
var xml = "<?xml version = \"1.0\" ?>"+
"<Parent xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
"<ElementOne xsi:nil=\"true\"/>" +
"<ElementTwo></ElementTwo>" +
"<ElementFour>Value</ElementFour>" +
public static T GetObjectFromXmlString<T>()
using (TextReader txReader = new StringReader(GetXml()))
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
nsmgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
XmlParserContext ctx = new XmlParserContext(null, nsmgr, null, XmlSpace.None);
XmlReader reader = XmlReader.Create(txReader, settings, ctx);
XmlSerializer pageDeserializer = new XmlSerializer(typeof(T));
var deserialize = (T)pageDeserializer.Deserialize(reader);
public static void Main()
Console.WriteLine("Original XML: ");
var parent = GetObjectFromXmlString<Parent>();
Console.WriteLine("ElementOne");
if(parent.ElementOne == null)
Console.WriteLine("\tparent.ElementOne is null");
else if(parent.ElementOne == string.Empty)
Console.WriteLine("\tparent.ElementOne is Empty");
Console.WriteLine("\t{0}", parent.ElementOne);
Console.WriteLine("ElementTwo");
if(parent.ElementTwo == null)
Console.WriteLine("\tparent.ElementTwo is null");
else if(parent.ElementTwo == string.Empty)
Console.WriteLine("\tparent.ElementTwo is Empty");
Console.WriteLine("\t{0}", parent.ElementTwo);
Console.WriteLine("ElementThree");
if(parent.ElementThree == null)
Console.WriteLine("\tparent.ElementThree is null");
else if(parent.ElementThree == string.Empty)
Console.WriteLine("\tparent.ElementThree is Empty");
Console.WriteLine("\t{0}", parent.ElementThree);
Console.WriteLine("ElementFour");
if(parent.ElementFour == null)
Console.WriteLine("\tparent.ElementFour is null");
else if(parent.ElementFour == string.Empty)
Console.WriteLine("\tparent.ElementFour is Empty");
Console.WriteLine("\t{0}", parent.ElementFour);