在用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,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}rn{1}",szHeader,szText); ; } catch (System.Exception ex) { throw ex; } finally { if (writer != null) writer.Close(); } } (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|