Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

XML serialization of list

I am serializing an object to XML. I have something like this:

Class A
{
   public string propertyA1  { get; set; }
   public List<B> bList { get; set; }
}

Class B
{
   public string num {get; set;}
   public string propertyB1  { get; set; }
}

When I serialize it to XML, I want it to look like this:

<A>
  <propertyA1>someVal</propertyA1> 
  <B num=1>
     <propertyB1>someVal</propertyB1> 
  </B>
  <B num=2>
     <propertyB1>someVal</propertyB1> 
  </B>
</A>

But, instead it looks like this:

<A>
  <propertyA1>someVal</propertyA1> 
  <bList>
     <B num=1>
        <propertyB1>someVal</propertyB1> 
     </B>
     <B num=2>
        <propertyB1>someVal</propertyB1> 
     </B>
  </bList>
</A>

Any idea how to get rid of the bList in the output? I can provide more sample code if needed

Thanks, Scott

like image 866
Doo Dah Avatar asked Jul 31 '12 01:07

Doo Dah


People also ask

What is XML serialization?

XML serialization is the process of converting XML data from its representation in the XQuery and XPath data model, which is the hierarchical format it has in a Db2® database, to the serialized string format that it has in an application.

Can you serialize a list of objects in C#?

Yes, using the XmlSerializer it will serialize a List<T> so long as T (or in your case Tag ) is serializable.

What is the basic difference between SOAP serialization and XML serialization?

XML serialization can also be used to serialize objects into XML streams that conform to the SOAP specification. SOAP is a protocol based on XML, designed specifically to transport procedure calls using XML. To serialize or deserialize objects, use the XmlSerializer class.


1 Answers

Add the attribute [XmlElement] to treat the collection as a flat list of elements:

Class A
{
   public string propertyA1  { get; set; }
   [XmlElement("B")]
   public List<B> bList { get; set; }
}

for more info click here

like image 125
D Stanley Avatar answered Oct 20 '22 03:10

D Stanley