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格式,但是保存的文件却多了一串字符(一般在尾部,内容是错误字符串生成处前面的字符串,长度不定)
求高手指点一下
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格式,但是保存的文件却多了一串字符(一般在尾部,内容是错误字符串生成处前面的字符串,长度不定)
求高手指点一下
<?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>
这样肯定不是错误的XML
不就是filestream的问题么
如果不是会是别的什么问题呢
至于XmlDocument的方案我试试
XmlDocument xml=new XmlDocument()
xml.load(path) 用这个方法?
但是他要的参数分别有:文件路径,xml文档流,TextReader,XmlReader
我都不知道怎么用了
新手,呵呵
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);
就是你接受到的字符串
看你原来的代码就没什么问题的样子
我怀疑是你接受到的数据可能有问题
Encoding.Default.GetBytes(xml); 尽量用明确指定的编码而不要用这种编码,如:Encoding.UTF8.GetBytes(xml);
还有保存文件时也采用指定文件编码的方式。