问题背景:
          系统用XML存储数据用webservice调,涉及到数据结构升级,例如
<ModelList>
  <model>
    <Id>A</Id>
    <Name>B</Name>
  </model>
  <model>
    <Id>B</Id>
    <Name>D</Name>
  </model>
</ModelList>
当然 实际的层次结构比这复杂很多,升级就是实体里的字段变更,多了或者少了。对于增加的字段都给默认值,这些实体都在系统里对应了相对应的类,也都有相对应的操作方法。问题描述:
        一次可能要动的类似XML文件有数百个,每个文件 少则几百K,多则数十M,个人感觉没法用foreach去做,会慢死去,求高效率解决此问题的思路或者代码。

解决方案 »

  1.   

    可以这样,不去加默认值,webservice 调用的时候没有相应节点就返回默认值,要修改节点时没有再添加
      

  2.   

    好吧,楼上的两位兄弟,我道歉,可能是我没描述清楚,此次数据升级操作是在本地进行的,为此要开发一个winform程序来完成升级。
    针对二楼大哥说的,每次调用的时候再去验证,就慢了,因为这个访问比较频繁,是一套工作流系统;
    对于三楼的大哥,这些XML文件不是配置文件,不对 ,也有配置,但是配置文件都不大,绝大多数的是记录文件,保存的是正在跑或者已经跑完了的记录,不能直接用新版本的去覆盖
    当然 也许是我没听懂你的意思,绝大部分的XML文件存储的是针对某个流程的流程记录,需要给记录实体List里的实体增加某些字段,每个实体都加,朋友建议我批量替换,找一个不常用的字段,比如:
    <Desc></Desc>
    替换为
    <新增的数据字段1></新增的数据字段1>
    <新增的数据字段2></新增的数据字段2>
    <新增的数据字段3></新增的数据字段3>
    <Desc></Desc>
    我在考虑可行性,也征求其他思路~~请各位指教
      

  3.   

    那些 xml 文件结构是否都相同的,如果是相同,就写个小程序,访问相应位置节点添加,如果大都不同的,手动替换最好了,简单,不容易出错,出了错还能撤销
      

  4.   

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

  5.   

    如果结构部分一致的话,那么完全可以找到公用的部分,然后替换新的文本如果仅仅是在根节点下加入,那么,可以解析xml或者利用正则找到位置,然后追加在根节点的下面或者最上面如果层次结构不明,放入的位置不确定,那么只能一个一个处理,无法完成批量操作