List的序列化没有提供所需的输出

时间:2013-01-31 08:31:42

标签: .net xml vb.net serialization xml-serialization

我有一个尝试过的列表,数组和所有不同的类型

我有一系列正在序列化的项目

在c#

public mySortableBindingList<Item> TransactionLines = new mySortableBindingList<Item>();

在vb.net中

Public WithEvents TransactionLines As New mySortableBindingList(Of Item)

xml输出

<TransactionLines>
   <Item>
    <elements>
   </item>
   <Item>
    <elements>
   </item>
</TransactionLines>

我的血清化方法如下

在C#中

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

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

}
return XMLString;
}

在vb.net

 Public Function SerializeToXML(Of T)(ByVal obj As T) As String

        Dim XMLString As String = ""
        Try
            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
        Catch ex As Exception

        End Try
        Return XMLString
    End Function

要序列化的列表

C#

[XmlElement(Order = 17)]
public mySortableBindingList<ItemSerial> Serials = new mySortableBindingList<ItemSerial>();

vb.net

<XmlElement(Order:=17)>
Public Serials As New mySortableBindingList(Of ItemSerial)

这是我的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>

我需要以下内容请解释我的错误

  <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>

2 个答案:

答案 0 :(得分:0)

你真的需要发布类定义。

无论如何,您需要XmlArrayItemAttribute指定ItemSerial的元素名称。见http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlarrayitemattribute(v=vs.100).aspx

发布代码时,我会添加一个示例。

答案 1 :(得分:0)

来自Richards的回答我发现我可以使用XMLArray属性来推断它是一个列表,因此按照我要求的方式进行序列化。