Click here to Skip to main content
15,891,657 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
I have a tried list, array and all different types

I have a list of items which is serializing just fine

in c#
C#
public List<Item> TransactionLines = new List<ItemSerial>();


in vb.net
VB
Public WithEvents TransactionLines As New List(Of Item)


xml output is
XML
<TransactionLines>
       <Item>
        <elements>
       </item>
       <Item>
        <elements>
       </item>
    </TransactionLines>


my serilization method is the following

In C#
C#
public string SerializeToXML<T>(T obj)
{
    string XMLString = "";
    
        XmlSerializer mySerializer = new XmlSerializer(obj.GetType());

        using (MemoryStream myMemStream = new MemoryStream()) {
            mySerializer.Serialize(myMemStream, obj);
            myMemStream.SeekToBegin();
            XMLString = myMemStream.ReadToEnd(Encoding.UTF8);
    return XMLString;
}


In vb.net
VB
Public Function SerializeToXML(Of T)(ByVal obj As T) As String

            Dim XMLString As String = ""
            
                Dim mySerializer As XmlSerializer = New XmlSerializer(obj.GetType)

                Using myMemStream As MemoryStream = New MemoryStream()
                    mySerializer.Serialize(myMemStream, obj)
                    myMemStream.SeekToBegin()
                    XMLString = myMemStream.ReadToEnd(Encoding.UTF8)
                End Using
             Return XMLString
End Function



List to be serialized

c#
C#
[XmlElement(Order = 17)]
public List<ItemSerial> Serials = new List<ItemSerial>();


vb.net
VB
<XmlElement(Order:=17)>
    Public Serials As New List(Of ItemSerial)

This is my xml output
XML
<Serials>
       <Serial>A</Serial>
       <ExpiryDate>0001-01-01T00:00:00</ExpiryDate>
       <Qty>1</Qty>
    </Serials>
    <Serials>
       <Serial>B</Serial>
       <ExpiryDate>0001-01-01T00:00:00</ExpiryDate>
       <Qty>1</Qty>
    </Serials>


The following output is required.
XML
<Serials>
       <ItemSerial>
          <Serial>A</Serial>
          <ExpiryDate>0001-01-01T00:00:00</ExpiryDate>
          <Qty>1</Qty>
       </ItemSerial>
       <ItemSerial>
          <Serial>B</Serial>
          <ExpiryDate>0001-01-01T00:00:00</ExpiryDate>
          <Qty>1</Qty>
       </ItemSerial>
    </Serials>


Please explain what I did wrong so far and what is to be done.
Posted

1 solution

By using the XMLArray attribute rather than XMLElement it will be serialized as required.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900