I am creating serialized XML for a LINQ to SQL project using the DataContractSerializer class. Upon serialization and inspecting the returned object, I get XML that looks like this.
- <ContentObject xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MyProject.Data.Model">
<_x003C_ID_x003E_k__BackingField>1</_x003C_ID_x003E_k__BackingField>
<_x003C_ObjectItemState_x003E_k__BackingField>Active</_x003C_ObjectItemState_x003E_k__BackingField>
<_x003C_ObjectName_x003E_k__BackingField>6ec555b0ba244ab4a8b2d2f2e7f4185a</_x003C_ObjectName_x003E_k__BackingField> ETC.
I am trying to find out how to simplify the XML structure to just be
- <ContentObject xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MyProject.Data.Model">
<ID>1</ID>
<ObjectItemState>Active</ObjectItemStat>
<ObjectName>6ec555b0ba244ab4a8b2d2f2e7f4185a</ObjectName> ETC
I have tried decorating the wrapper object
namespace MyProject.Data.Model
{
[Serializable]
public class ContentObject
{
[XmlAttribute("ID")]
public int ID { get; set; }
[XmlAttribute("ObjectName")]
public string ObjectName { get; set; }
[XmlAttribute("ObjectItemState")]
public string ObjectItemState { get; set; } ETC
}
}
but this doesn’t help. Can anyone help me find what exactly I need to do to specify the XML structure, either within the class or in the DBML Designer file? Any link or article would be very helpful too. Thanks!
If you are using the
DataContractSerializeras you mentioned, then you have to decorate your structure with[DataContract]and[DataMember]attributes – not[Serializable]and[XmlAttribute]and so forth (those are used for regular and XML serializers).The DataContractSerializer is a strictly “opt-in” serializer – only those fields and/or properties that you specifically mark with
[DataMember]will end up being serialized; as opposed to the XmlSerializer which is opt-out – it serializes everything unless it’s marked with[XmlIgnore].Marc