首页新闻找找看学习计划

c# object 序列化保存到xml文件出现多余字符

0
悬赏园豆:10 [已解决问题] 解决于 2015-09-24 10:12

using (var fs = File.OpenWrite(xmlToPath))
{
      var xmlSerializer = new XmlSerializer(typeof(T));
      xmlSerializer.Serialize(fs, t);
}

生成的xml

<?xml version="1.0"?>
<Equity xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

...中间其他字符...

</Equity>>

尾部加粗的是多出来的字符,可能是>也可能是Equity>

但是做了个demo,循环1000次都没有问题,实际项目里就有问题

Mango_的主页 Mango_ | 初学一级 | 园豆:5
提问于:2015-09-18 18:45
< >
分享
最佳答案
0

大概是原来的文件的尾部,用OpenWrite是覆盖写入的,如果新内容没有原来的长,原来的内容就不会被完全覆盖,改用  File.Create 试试

收获园豆:10
OpportunityLiu | 菜鸟二级 |园豆:255 | 2015-09-20 13:25

两个文件内容是一样的,因为是先读取,没修改就保存了,现在的解决办法是保存时先删掉再创建

Mango_ | 园豆:5 (初学一级) | 2015-09-21 09:55
其他回答(1)
0

实际项目中是因为多线程导致。

写文件的时候注意写入锁,写入的内容全清空。

保存再删除,同时进行更糟糕,直接会导致正在写入无法删除。

````` | 园豆:14268 (专家六级) | 2015-09-21 10:01

应该不是多线程吧,我是在开发阶段自己测试,就一个用户。

支持(0) 反对(0) Mango_ | 园豆:5 (初学一级) | 2015-09-21 10:03

@Mango_:     一个用户就不会多个线程?如果是web,刷新下页面都是两个线程。。

支持(0) 反对(0) ````` | 园豆:14268 (专家六级) | 2015-09-21 10:10

@`````: 我只是加载的时候读取xml,点保存按钮写回xml,对写入来说应该只有一个线程吧

支持(0) 反对(0) Mango_ | 园豆:5 (初学一级) | 2015-09-21 10:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册