本帖最后由 saturn4263195 于 2012-07-08 16:22:35 编辑

解决方案 »

  1.   

    晕。不就是改变一下文件后缀名嘛。你还要怎样去重新发明个“.dat”格式?
      

  2.   

    大侠你好,谢谢你的解答。
    我的dat文件是/dat目录下   所有xml的合体...
      

  3.   

    封装多个xml,把么先实例化一个string数组,每一个元素是一个xml字符串,然后把这个数组按照xml格式写入.dat文件就行了。如果你要考虑很多(你没有说明白)的顾虑,那么你使用一个轻量级的嵌入式文件数据库好了。例如Jet(access)、SQLite、db4o、sql server compact,都可以。甚至使用Excel也可以。就不用普通的文本文件了。
      

  4.   

    谢谢你的解答,期间考虑到数据库,但由于考虑软件的适用性和部署难度被否决了。我现在写入是没有问题的,问题在于,
    当我读取到一个完整的xml的文本时,如何把它当作xml文件来操作?
    即如何 实现 (xml)string 的方法?
      

  5.   

    把多个xml字符串装入一个string数组,并且在表达为一个xml,写入文本文件。
    或者使用嵌入式数据库。
    或者你自己写一个简单的文件数据库。但是你要真正按照数据库基本原理去设计。你的“搜索区”显然有点简单,它应该是两个链表,一个链表是所有已经使用过的数据块,一个是释放了空间(删除了xml内容)以后空余出来的数据块。
      

  6.   


    .dat文件 在每一次 \dat目录下的某个xml文件  发生变动时,都会被重新创建。
    所以.dat文件只有 被检索的业务需要,所以我设计的偏向简单。
    请问大侠,“并且在表达为一个xml,写入文本文件。”可否说明一下怎么处理的呢?
      

  7.   


    那你想的也太简单了吧!目录下的某个xml文件发生变动时,你只要从.dat文件中顺序搜索到相应的数据块,把它从已分配队列上摘下并连入(按照偏移地址排序的)空闲队列上,然后在空闲队列上找到一块大小合适的数据块摘下来放入已分配队列中,并且写入数据,这就行了。当然相邻的空闲数据块应该可以合并为一个空闲数据块。这用不着“重新创建”文件。
      

  8.   

    “并且在表达为一个xml,写入文本文件。”我看不懂这个意思?!
      

  9.   


    大侠的是合情合理的方法,我的是投机倒把的方法,呵呵,
    下面,检索出来的xml文本 ,即
    br.Read(buffer, 0, buffer.Length);
    string result = Encoding.Default.GetString(buffer);
    这个可以转化成 xml文件来处理吗?如果不行的话,我之前的编码就要推翻了...
      

  10.   


    把多个xml字符串装入一个string数组,并且把这个string数组再序列化表达为一个xml,然后把这个xml再写入一个文本文件。当然这是最初始的做法,不考虑性能。而当需要重构时,我建议就直接使用嵌入式数据库就行了。后边说到了有关“两个链表”的文件数据块管理结构,是因为考虑到你的关于“搜索区、内容区”的数据结构而提出的。
      

  11.   

    XmlDocument doc=new XmlDocument();
    doc.LoadXml(string),
    你是这个意思吗?