Quick Tip: Serializing an Object Field as an XML Attribute


The addition of the XML Serializer is one of the reasons I really love version 2 of the .NET Compact Framework.  I use the XML Serializer in very nearly every application I write; to save application state, data files, etc.  By default, the XML Serializer will create a child node for every field in a type.  For example, the following object

public class TestData
{
    public Int32 TestID;
    public String Description;
}


becomes

<TestData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Description>Sample test description.</Description>
  <TestID>0</TestID>
</TestData>


There are times that you may wish to serialize one or more fields as attributes on the object's node (ex: reduce the size of the XML).  By decorating the TestID field with an XmlAttribute attribute, the TestID field

[XmlAttribute()]
public Int32 TestID;


now becomes an attribute (highlighted in purple) on the TestData node.

<TestData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" TestID="0">
  <Description>Sample test description.</Description>
</TestData>


Enjoy!
-- DK

Disclaimers:
This posting is provided "AS IS" with no warranties, and confers no rights.
 

Comments (1)

  1. There are times that you may wish to serialize one or more fields as attributes on the object’s node

Skip to main content