代码和注释如下:           
            string cmdStr = "select top 3 * from Customers for xml auto,elements";
            SqlConnection cn = new SqlConnection(connStr);
            cn.Open();
            SqlCommand cmd = new SqlCommand(cmdStr,cn);
            
            //SqlDataReader sdr = cmd.ExecuteReader();
            //XmlReader xmldr = cmd.ExecuteXmlReader();//运行时xmldr为null,奇怪?            //通过下面方法得到xml数据
            string xmlData = (string)cmd.ExecuteScalar();
            StringReader strReader = new StringReader(xmlData);
            DataSet ds = new DataSet();
            //此处抛出异常,提示节点不是一个
              //经测试,如将string cmdStr 改为 "select top 1 * from Customers for xml auto,elements"
            //下面语句则不出错
            ds.ReadXml(strReader,XmlReadMode.Auto);
            //ds.Load(sdr, LoadOption.OverwriteChanges, ds.Tables["Customers"]);
            //xmldr.Close();
            //strReader.Close();
            cn.Close();
            string filepath = "C:\\mydataXML.xml";
            ds.WriteXml(filepath);请指教,如有不明白之处,请多多见谅