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

恶心的XML之"根级别上的数据无效。 第 1 行,位置 1"

发布时间:2020-12-16 02:19:52 所属栏目:百科 来源:网络整理
导读:就是今天,做了一个功能,在一个弹出页面操作几个表的数据,形成一个临时DataTable,然后将它转换为XML,然后再return到父级页面 父级页面,再将XML解析成DataTable再进行相关操作。 恶心随之而来,再讲XML转换为DataTable的时候,总是报错“根级别上的数据

就是今天,做了一个功能,在一个弹出页面操作几个表的数据,形成一个临时DataTable,然后将它转换为XML,然后再return到父级页面

父级页面,再将XML解析成DataTable再进行相关操作。


恶心随之而来,再讲XML转换为DataTable的时候,总是报错“根级别上的数据无效。 第 1 行,位置 1",但是调试将xmlData参数直接写的时候,

不出错!


或许微软的错误提示已经很明确,最前边的字符有问题,但是我们感觉凡胎肉眼看到的就是<,没错啊!

然后百啊百,可能<的前边还有空格啊回车之类的,至于怎么就有这个了,不得而知。


那就想办法吧,找到xmlData的第一个<,然后截取<之后的所有字符串,然后在最前面+<


xmlData = "<" + xmlData.Substring(xmlData.IndexOf('<') + 1);


附完整代码:


XML转换DataSet方法

//将xml对象内容字符串转换为DataSet
        public static DataSet ConvertXMLToDataSet(string xmlData)
        {
                        xmlData = "<" + xmlData.Substring(xmlData.IndexOf('<') + 1);
            StringReader stream = null;
            XmlTextReader reader = null;
            try
            {
                DataSet xmlDS = new DataSet();
                stream = new StringReader(xmlData);
                //从stream装载到XmlTextReader
                reader = new XmlTextReader(stream);
                xmlDS.ReadXml(reader);
                return xmlDS;
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (reader != null) reader.Close();
            }
        }

DataSet转换XML方法
//将DataSet转换为xml对象字符串
        public static string ConvertDataSetToXML(DataSet xmlDS)
        {
            MemoryStream stream = null;
            XmlTextWriter writer = null;

            try
            {
                stream = new MemoryStream();
                //从stream装载到XmlTextReader
                writer = new XmlTextWriter(stream,Encoding.UTF8);

                //用WriteXml方法写入文件.
                xmlDS.WriteXml(writer);
                int count = (int)stream.Length;
                byte[] arr = new byte[count];
                stream.Seek(0,SeekOrigin.Begin);
                stream.Read(arr,count);

                UTF8Encoding utf = new UTF8Encoding();
                return utf.GetString(arr).Trim().Replace("n","");
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (writer != null) writer.Close();
            }
        }

(编辑:李大同)

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

    推荐文章
      热点阅读