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.