【发布时间】:2013-06-18 11:27:45
【问题描述】:
请考虑以下代码:
public class Obj : IObj
{
public string Prop1{get;set;}
public string Prop2{get;set;}
public string Prop3{get;set;}
}
public static void Persist(IObj obj, string fileFullName)
{
try
{
Directory.CreateDirectory(Path.GetDirectoryName(fileFullName));
var xmlSerializer = new XmlSerializer(obj.GetType());
using (var fileStream = File.Open(fileFullName, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
xmlSerializer.Serialize(fileStream, obj);
fileStream.Close();
}
}
catch (Exception e)
{
//log
}
}
当第一次在 'Obj' 上调用 'Persist' 时,我在磁盘上得到了一个有效的 xml 文件,它看起来像这样:
<?xml version="1.0"?> <Obj xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Prop1>value1</Prop1> <Prop2>value2</Prop2> <Prop2>value3</Prop3> </Obj>
但是当在 'Obj' 上第二次调用 'Persist' 时(在将 'value1' 更改为 ' value',例如),一个额外的 '>' 符号会添加到文件的末尾,使其无效。
<?xml version="1.0"?> <Obj xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Prop1>value</Prop1> <Prop2>value2</Prop2> <Prop2>value3</Prop3> </Obj>>
我尝试调试它但没有发现任何异常,所以我猜它必须这样做 以我打开文件的方式。 任何解释它的帮助将不胜感激。
【问题讨论】:
标签: c# xml-serialization xmlserializer