c#代码:
byte[] buff = wbc.DownloadData("http://...");   
            string xml = Encoding.Default.GetString(buff);   //获得xml字符串
            xml = xml.Replace("&", "+++");     //替换特殊字符
            
            byte[] buff2 = Encoding.Default.GetBytes(xml);   
            //写入文件
            FileStream fs = new FileStream(savepath + tablename + ".xml", FileMode.Create, FileAccess.Write);
            fs.Write(buff2, 0, buff2.Length);
            fs.Flush();
            fs.Close();
问题:有几率性的出现获得的xml字符串是正确的xml格式,但是保存的文件却多了一串字符(一般在尾部,内容是错误字符串生成处前面的字符串,长度不定)
求高手指点一下

解决方案 »

  1.   

    比如:
    <?xml version="1.0" encoding="gbk"?><table name="CUMANAGERINFO">
    <row  SHOPCODE="MD0000000006967" MANAGERCODE="TZ0035" MANAGERUNIT="" MANAGERNAME="李庆玲" MANAGERTEL="" LASTUPDATETIME="20091130193222" MANAGERLEVEL="0" PARMANAGERCODE=""/>
    <row  SHOPCODE="MD0000000006968" MANAGERCODE="TZ0035" MANAGERUNIT="" MANAGERNAME="李庆玲" MANAGERTEL="" LASTUPDATETIME="20091130202458" MANAGERLEVEL="0" PARMANAGERCODE=""/>
    <row  SHOPCODE="MD0000000006969" MANAGERCODE="TZ0035" MANAGERUNIT="" MANAGERNAME="李庆玲" MANAGERTEL="" LASTUPDATETIME="20091130202350" MANAGERLEVEL="0" PARMANAGERCODE=""/>
    <row  SHOPCODE="MD0000000006970" MANAGERCODE="TZ0035" MANAGERUNIT="" MANAGERNAME="李庆玲" MANAGERTEL="" LASTUPDATETIME="20091130193403" MANAGERLEVEL="0" PARMANAGERCODE=""/>
    <row  SHOPCODE="MD0000000007006" MANAGERCODE="TZ0035" MANAGERUNIT="1" MANAGERNAME="李庆玲" MANAGERTEL="" LASTUPDATETIME="20091202144759" MANAGERLEVEL="0" PARMANAGERCODE=""/>
     </table>DATETIME="20091202144759" MANAGERLEVEL="0" PARMANAGERCODE=""/>
     </table>
      

  2.   

    能不能这样 你得到的xml用XmlDocument来解析 然后再调用保存方法直接保存
    这样肯定不是错误的XML
      

  3.   

    我认为你这个肯定不是filestream的问题
      

  4.   

    xml都是正确的,保存的文件就出错错了
    不就是filestream的问题么
    如果不是会是别的什么问题呢
    至于XmlDocument的方案我试试
      

  5.   

    用XmlDocument解析我好像不会用
    XmlDocument xml=new XmlDocument()
    xml.load(path)   用这个方法?
    但是他要的参数分别有:文件路径,xml文档流,TextReader,XmlReader
    我都不知道怎么用了
    新手,呵呵
      

  6.   

    你把整个这段
                byte[] buff2 = Encoding.Default.GetBytes(xml);  
                //写入文件 
                FileStream fs = new FileStream(savepath + tablename + ".xml", FileMode.Create, FileAccess.Write); 
                fs.Write(buff2, 0, buff2.Length); 
                fs.Flush(); 
                fs.Close(); 
    改为这段一样可以达到目的,这样你再看看是否正常:
    File.WriteAllText(savepath + tablename + ".xml", xml);
      

  7.   

    XmlDocument 可以直接LoadXML 
    就是你接受到的字符串 
    看你原来的代码就没什么问题的样子
    我怀疑是你接受到的数据可能有问题
      

  8.   

    有可能是编码问题。
    Encoding.Default.GetBytes(xml);  尽量用明确指定的编码而不要用这种编码,如:Encoding.UTF8.GetBytes(xml);  
    还有保存文件时也采用指定文件编码的方式。