代码如下:
StreamReader sr= new StreamReader(stream,System.Text.Encoding.GetEncoding("utf-8"));
try
  {
    xDoc.Load(sr);
  }
catch(Exception ex)
  {
    sr= new StreamReader(stream,System.Text.Encoding.GetEncoding("gb2312"));
    xDoc.Load(sr);
  }
问题:
如果utf-8读不出来的话,后边的也读不出来,而如果先用gb2312读的话就可以读出来,感觉好像xDoc读过一次如果出错,后边就不会读成功。谁有类似的经验,请赐教。

解决方案 »

  1.   

    没碰到过先把xDoc = null试一下
      

  2.   

    可以把XDOC.Dispose(),在重新定义一个
      

  3.   

    会否是参数stream的问题?在第一次utf8失败后stream.close()看看
      

  4.   

    以上都试过了,我觉得也是stream的问题,但是不知道怎么解决。
      

  5.   

    我一般读取xml文件。lz的问题没有碰到过。
      

  6.   

    你把stream和xDoc 都重新构造一下
    如果不行
    那就比较妖了
      

  7.   

    你有没有关闭流读取器?
    其实得到XML文件数据方法很多,比如XmlDocument doc = new XmlDocument();
    doc.Load("StationList.xml");
    XmlNodeList nodes = doc.SelectNodes(@"Stations/Station");
    这是一种!DataSet ds = new DataSet();
    string path = AppDomain.CurrentDomain.BaseDirectory + "ReportConfig.xml";
    ds.ReadXml(path);
    这是另一种方法!或者
    using (StringReader sr = new StringReader(message))
    {
    dsData.ReadXml(sr);
    }