读取DataTable内容转换为xml字符串

xiaoxiao2021-02-28  92

        在用c#进行代码开发,需要将DataTable内容转换为xml字符串。从网上下载了代码运行后,发现字符串转换后,复制到xml文件,用xml校验器(xmlspy)校验有异常,用微软的xml加载也失败。

        经过研究和测试后发现,是因为保存文件后,其前两个字节保存的是文件编码信息,原来直接进行读写,所以处理有问题,正确的读写处理的时候,需要跳过前两个字节,进行读写操作才可以。希望对大家以后遇到类似问题的时候有所帮助。

       正确代码如下:   

        /// <summary>         /// DataTable转换成XML         /// </summary>         /// <param name="xmlDS">数据表</param>         /// <returns>表转换的字符串</returns>         private string ConvertDataTableToXML(DataTable xmlDS)         {             MemoryStream stream = null;             XmlTextWriter writer = null;             try             {                 stream = new MemoryStream();                 //从stream装载到XmlTextReader                 writer = new XmlTextWriter(stream, Encoding.Unicode);                 //用WriteXml方法写入文件.                 xmlDS.WriteXml(writer);                 int count = (int)stream.Length;                 byte[] arr = new byte[count];                 stream.Seek(0, SeekOrigin.Begin);                 stream.Read(arr, 0, count);                 //返回Unicode编码的文本                 UnicodeEncoding utf = new UnicodeEncoding();                 //注意跳过前两个字节,那个是标志是unicode还是ansi的,否则在其他地方使用会异常。注意后面的粗体字2.                 string szHeader = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";                 string szText = System.Text.Encoding.Unicode.GetString(arr, 2, count-2);                 return String.Format("{0}\r\n{1}", szHeader, szText); ;             }             catch (System.Exception ex)             {                 throw ex;             }             finally             {                 if (writer != null)                     writer.Close();             }         }

转载请注明原文地址: https://www.6miu.com/read-54538.html

最新回复(0)