Note that there are some explanatory texts on larger screens.

plurals
  1. POC# Xml Serialization & Deserialization
    primarykey
    data
    text
    <p>I am trying to serialize an object &amp; save it into a Sql server 2008 xml field. I also have some deserialization code that re-hydrates the object. I am able to serialize &amp; save the object into the db, but get a "Root element missing" exception.</p> <pre><code>[XmlRoot("Patient")] public class PatientXml { private AddressXml _address = null; private EmergencyContactXml _emergencyContact = null; private PersonalXml _personal = null; [XmlElement] public PersonalXml Personal { get { return _personal; } set { _personal = value; } } [XmlElement] public AddressXml Address { get { return _address; } set { _address = value; } } [XmlElement] public EmergencyContactXml EmergencyContact { get { return _emergencyContact; } set { _emergencyContact = value; } } public PatientXml(){} public PatientXml(Patient patient) { _address = new AddressXml(patient.Address); _emergencyContact = new EmergencyContactXml(patient.EmergencyInfo); _personal = new PersonalXml(patient); } } public class PersonalXml { private string _firstName = string.Empty, _lastName = string.Empty, _dateOfBirth = string.Empty, _phone = string.Empty; [XmlAttribute] public string FirstName { get { return _firstName; } set { _firstName = value; } } [XmlAttribute] public string LastName { get { return _lastName; } set { _lastName = value; } } [XmlAttribute] public string DateOfBirth { get { return _dateOfBirth; } set { _dateOfBirth = value; } } [XmlAttribute] public string Phone { get { return _phone; } set { _phone = value; } } public PersonalXml(){} public PersonalXml(Patient patient) { _firstName = patient.FirstName; _lastName = patient.LastName; _dateOfBirth = patient.DateOfBirth.ToShortDateString(); _phone = patient.Phone; } } public class AddressXml { private string _address1 = string.Empty, _address2 = string.Empty, _city = string.Empty, _state = string.Empty, _zip = string.Empty; [XmlAttribute] public string Address1 { get { return _address1; } set { _address1 = value; } } [XmlAttribute] public string Address2 { get { return _address2; } set { _address2 = value; } } [XmlAttribute] public string City { get { return _city; } set { _city = value; } } [XmlAttribute] public string State { get { return _state; } set { _state = value; } } [XmlAttribute] public string Zip { get { return _zip; } set { _zip = value; } } public AddressXml(){} public AddressXml(Address address) { _address1 = address.Address1; _address2 = address.Address2; _city = address.City; _state = address.State; _zip = address.ZipCode; } } public class EmergencyContactXml { private string _name = string.Empty, _phone = string.Empty, _relationship = string.Empty; [XmlAttribute] public string Name { get { return _name; } set { _name = value; } } [XmlAttribute] public string Phone { get { return _phone; } set { _phone = value; } } [XmlAttribute] public string Relationship { get { return _relationship; } set { _relationship = value; } } public EmergencyContactXml(){} public EmergencyContactXml(EmergencyContact contact) { _name = contact.ContactName; _phone = contact.Phone; _relationship = contact.Relationship; } } </code></pre> <p>Serialized Xml output:</p> <pre><code>&lt;Patient xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt; &lt;Personal FirstName="Test" LastName="User 1" DateOfBirth="3/13/1966" Phone="6304449866" /&gt; &lt;Address Address1="123 Some St" City="Bartlett" State="CT" Zip="60111" /&gt; &lt;EmergencyContact Name="Dr Chanduwarthana" Phone="6309769484" Relationship="Father" /&gt; &lt;/Patient&gt; </code></pre> <p>Serization &amp; Deserialization code:</p> <pre><code>public static class XmlSerializer { public static string Serialize&lt;T&gt;(T item) { MemoryStream memStream = new MemoryStream(); using (XmlTextWriter textWriter = new XmlTextWriter(memStream, Encoding.Unicode)) { System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(T)); serializer.Serialize(textWriter, item); memStream = textWriter.BaseStream as MemoryStream; } if (memStream != null) return Encoding.Unicode.GetString(memStream.ToArray()); else return null; } public static T Deserialize&lt;T&gt;(string xmlString) { if (string.IsNullOrWhiteSpace(xmlString)) return default(T); using (MemoryStream memStream = new MemoryStream()) { using (XmlTextWriter textWriter = new XmlTextWriter(memStream, Encoding.Unicode)) { memStream.Position = 0; System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(T)); return (T)serializer.Deserialize(memStream); } } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload