加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 08:13:14 所属栏目:百科 来源:网络整理
导读:在用c#进行代码开发,需要将DataTable内容转换为xml字符串。从网上下载了代码运行后,发现字符串转换后,复制到xml文件,用xml校验器(xmlspy)校验有异常,用微软的xml加载也失败。 经过研究和测试后发现,是因为保存文件后,其前两个字节保存的是文件编码

在用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(); } }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读