求助:大文本文件内容实现高效率查找替换的思路

beckhon 2012-06-04 10:08:46
问题背景:
系统用XML存储数据用webservice调,涉及到数据结构升级,例如
<ModelList>
<model>
<Id>A</Id>
<Name>B</Name>
</model>
<model>
<Id>B</Id>
<Name>D</Name>
</model>
</ModelList>
当然 实际的层次结构比这复杂很多,升级就是实体里的字段变更,多了或者少了。对于增加的字段都给默认值,这些实体都在系统里对应了相对应的类,也都有相对应的操作方法。

问题描述:
一次可能要动的类似XML文件有数百个,每个文件 少则几百K,多则数十M,个人感觉没法用foreach去做,会慢死去,求高效率解决此问题的思路或者代码。
...全文
276 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
__天涯寻梦 2012-06-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
好吧,楼上的两位兄弟,我道歉,可能是我没描述清楚,此次数据升级操作是在本地进行的,为此要开发一个winform程序来完成升级。
针对二楼大哥说的,每次调用的时候再去验证,就慢了,因为这个访问比较频繁,是一套工作流系统;
对于三楼的大哥,这些XML文件不是配置文件,不对 ,也有配置,但是配置文件都不大,绝大多数的是记录文件,保存的是正在跑或者已经跑完了的记录,不能直接用新版本的去覆盖
当然 也……
[/Quote]
那些 xml 文件结构是否都相同的,如果是相同,就写个小程序,访问相应位置节点添加,如果大都不同的,手动替换最好了,简单,不容易出错,出了错还能撤销
  • 打赏
  • 举报
回复
你应该有一个专门的维护时间,你要改正在运行的程序,肯定会对某些用户造成影响,并且无法保证数据的完整性

就像客户端游戏每周都有固定的维护更新时间一样,有的1-2个小时,有的甚至更长

而至于你究竟如何去替换,倒是次要的

beckhon 2012-06-04
  • 打赏
  • 举报
回复
好吧,楼上的两位兄弟,我道歉,可能是我没描述清楚,此次数据升级操作是在本地进行的,为此要开发一个winform程序来完成升级。
针对二楼大哥说的,每次调用的时候再去验证,就慢了,因为这个访问比较频繁,是一套工作流系统;
对于三楼的大哥,这些XML文件不是配置文件,不对 ,也有配置,但是配置文件都不大,绝大多数的是记录文件,保存的是正在跑或者已经跑完了的记录,不能直接用新版本的去覆盖
当然 也许是我没听懂你的意思,绝大部分的XML文件存储的是针对某个流程的流程记录,需要给记录实体List里的实体增加某些字段,每个实体都加,朋友建议我批量替换,找一个不常用的字段,比如:
<Desc></Desc>
替换为
<新增的数据字段1></新增的数据字段1>
<新增的数据字段2></新增的数据字段2>
<新增的数据字段3></新增的数据字段3>
<Desc></Desc>
我在考虑可行性,也征求其他思路~~请各位指教
  • 打赏
  • 举报
回复
对于升级,可以设定版本号,将最新的文件根据版本号来直接覆盖掉
__天涯寻梦 2012-06-04
  • 打赏
  • 举报
回复
可以这样,不去加默认值,webservice 调用的时候没有相应节点就返回默认值,要修改节点时没有再添加
beckhon 2012-06-04
  • 打赏
  • 举报
回复
顶上去,求各位大神小神前辈老师指点
  • 打赏
  • 举报
回复
如果结构部分一致的话,那么完全可以找到公用的部分,然后替换新的文本

如果仅仅是在根节点下加入,那么,可以解析xml或者利用正则找到位置,然后追加在根节点的下面或者最上面

如果层次结构不明,放入的位置不确定,那么只能一个一个处理,无法完成批量操作
beckhon 2012-06-04
  • 打赏
  • 举报
回复
先感谢两位热心的大大再次回复我的问题,祝你们这个月升职加薪;
还是这样说吧
其他都不考虑,就单纯的考虑这个:
一个数十兆的XML文件,里面是成千上万个结构完全实体(先不考虑多层的情况,就考虑到第一层,因为比如有某些第三层节点下有第四层,有的没有)
成千上万个结构完全相同的实体构成的这个XML,我要给他们每个实体都加上一行<IsSpecificObject>False</IsSpecificObject>
有没有什么好办法,只能循环取出每一个实体,然后把这一行加进去,然后下一个,然后下一个,如此反复么?感觉这样会崩掉,,,,有没有更好或者更高效的办法?

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧