Prä*_*olf 4 c# serialization xml-serialization
我需要能够Xml Serialize一个内部的类,所以我必须实现IXmlSerializable.
这个类有两个字符串和一个List.
我知道使用WriteElementString和ReadElementContentAsString读取和写入字符串.
但是,我迷失了如何在ReadXml和WriteXml方法中读取和写入List.
我该怎么做,或者有没有办法序列化和反序列化对象,同时保持它的内部可访问性?
只需<List>
为列表本身编写一个元素,然后遍历这些项并将它们作为<Item>
元素写出来.
如果元素是可以是XML Serialized的类的实例,那么您可以为元素的类型创建XmlSerializer实例,然后将每个元素序列化为您已经使用的相同XmlWriter.例:
public void WriteXml(XmlWriter writer)
{
writer.WriteStartElement("XmlSerializable");
writer.WriteElementString("Integer", Integer.ToString());
writer.WriteStartElement("OtherList");
writer.WriteAttributeString("count", OtherList.Count.ToString());
var otherSer = new XmlSerializer(typeof(OtherClass));
foreach (var other in OtherList)
{
otherSer.Serialize(writer, other);
}
writer.WriteEndElement();
writer.WriteEndElement();
}
public void ReadXml(XmlReader reader)
{
reader.ReadStartElement("XmlSerializable");
reader.ReadStartElement("Integer");
Integer = reader.ReadElementContentAsInt();
reader.ReadEndElement();
reader.ReadStartElement("OtherList");
reader.MoveToAttribute("count");
int count = int.Parse(reader.Value);
var otherSer = new XmlSerializer(typeof (OtherClass));
for (int i=0; i<count; i++)
{
var other = (OtherClass) otherSer.Deserialize(reader);
OtherList.Add(other);
}
reader.ReadEndElement();
reader.ReadEndElement();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14294 次 |
最近记录: |