string sql = "SELECT id,test FROM test FOR XML AUTO,XMLDATA";       SqlConnection conn =new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
       SqlCommand cmd = new SqlCommand(sql, conn);       conn.Open();
      XmlTextReader objXmlReader = (XmlTextReader)cmd.ExecuteXmlReader();
            
       DataSet ds = new DataSet();
       ds.DataSetName = "XML";
       ds.ReadXml(objXmlReader, XmlReadMode.Fragment);
       ds.WriteXml(Server.MapPath("XML.xml"));
       conn.Close(); 错误提示:
无法将类型为“System.Xml.XmlTextReaderImpl”的对象强制转换为类型“System.Xml.XmlTextReader”。

解决方案 »

  1.   

    直接將數據讀到dataset里面,然后使用dataset.WriteXml()方法不就是了,\
    為什么要用
    XmlTextReader objXmlReader = (XmlTextReader)cmd.ExecuteXmlReader();
      

  2.   

    XmlTextReader是从继承的,不能把基类转为子类。这个存储过程返回的是xml字符串,
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(xmlstr);
                XmlReader txt =  XmlReader.Create(xmlDoc.OuterXml);
                DataSet ds = new DataSet();
                ds.ReadXml(txt);
      

  3.   

    SqlDataAdapter da= new SqlDataAdapter(sql,con);
    da.Fill(ds);
    ds.WriteXml(Server.MapPath("XML.xml"));
      

  4.   

    你这句有问题
    XmlTextReader objXmlReader = (XmlTextReader)cmd.ExecuteXmlReader();一个是继承IDataReader,是用于操作数据库方面;另一个是继承XmlReader,是用于stream来操作xml的。
    虽说都有reader直说,但是属于不同范畴。
      

  5.   

    你要干什么?你这句话是错误的,不管是在web还是win下。
    XmlTextReader objXmlReader = (XmlTextReader)cmd.ExecuteXmlReader();
      

  6.   

    to 我要怎么样修改才可以实现此功能如果你用DataReader去获得数据集的话,要想对麻烦写,需要显示创建datatable,然后逐行去取。这方面不如DataAdapter+dataset来的简便。等你获得了DataSet对象后,形成xml就简单了,可以参考前面所说的。
      

  7.   

    两个没继承关系的类只是名字相同也能转换?
    用DataSet.WriteXml写方便以后读也方便