我有一个尝试过的列表,数组和所有不同的类型
我有一系列正在序列化的项目
在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>
答案 0 :(得分:0)
你真的需要发布类定义。
无论如何,您需要XmlArrayItemAttribute
指定ItemSerial
的元素名称。见http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlarrayitemattribute(v=vs.100).aspx
发布代码时,我会添加一个示例。
答案 1 :(得分:0)
来自Richards的回答我发现我可以使用XMLArray属性来推断它是一个列表,因此按照我要求的方式进行序列化。