0

私は試したリスト、配列、そしてすべての異なるタイプを持っています

うまくシリアル化されているアイテムのリストがあります

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

2 に答える 2

0

リチャーズの回答から、XMLArray属性を使用できることがわかりました。これは、リストであると推測されるため、必要な方法でシリアル化されます。

于 2013-01-31T10:57:46.267 に答える
0

あなたは本当にクラス定義を投稿する必要があります。

いずれにしてもXmlArrayItemAttribute、の要素名を指定する必要がありますItemSerialhttp://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlarrayitemattribute(v=vs.100).aspxを参照してください

コードを投稿するときに、例を追加します。

于 2013-01-31T08:41:36.337 に答える