C# DataTable 转成 用于xml ; 读取 xml 转成 DataTable

1 篇文章 0 订阅

 测试用例

static void Main(string[] args)
{

  DataTable _dtImg = new DataTable("DataTableName"); 
            _dtImg.Columns.Add("列名1");
            _dtImg.Columns.Add("列名2");
            _dtImg.Columns.Add("列名3");
            DataRow newRow = _dtImg.NewRow();
            newRow["列名1"] = "值1";
            newRow["列名2"] = "值2";
            newRow["列名3"] = "值3";
            _dtImg.Rows.Add(newRow);
            DataTableToXMLPath(_dtImg,"main.xml","");
            string pathname = AppDomain.CurrentDomain.BaseDirectory+ "main.xml";
            DataTable dataTable= ConvertXMLToDataDataTable(pathname);
            foreach (DataRow item in dataTable.Rows)
            {
               var  ss= item["列名1"];
            }
            var str= dataTable.Rows[0]["列名1"];              

}

 

将DataTable 转成 用于xml

/// <summary>
        /// DataTable  生成XML文件
        /// </summary>
        /// <param name="dtTable">DataTable _dtImg = new DataTable("imgdata"); DataRow newRow = this._dtImg.NewRow();newRow["LocalPath"] = "名字";</param>
        /// <param name="strXMLName">XML名称  例如:  + "tmpimgName.xml"</param>
        /// <param name="strSaveXMLPath">保存的文件夹地址 例如: "Image\\unfinished\\"</param>
        /// <returns></returns>
        public static bool DataTableToXMLPath(DataTable dtTable, string strXMLName, string strSaveXMLPath)
        {
            MemoryStream stream = null;
            XmlTextWriter writer = null;
            StreamWriter sw = null;
            string pathname = AppDomain.CurrentDomain.BaseDirectory + strSaveXMLPath;
            try
            {
                if (!Directory.Exists(pathname)) Directory.CreateDirectory(pathname);
                stream = new MemoryStream();
                writer = new XmlTextWriter(stream, Encoding.UTF8);
                dtTable.WriteXml(writer, XmlWriteMode.WriteSchema);
                int nCount = (int)stream.Length;
                byte[] arr = new byte[nCount];
                stream.Seek(0, SeekOrigin.Begin);
                stream.Read(arr, 0, nCount);
                UTF8Encoding utf = new UTF8Encoding();
                string strContent = utf.GetString(arr).Trim();
                sw = new StreamWriter(pathname + strXMLName);
                sw.Write(strContent);
                return true;
            }
            catch
            {
                return false;
            }
            finally
            {
                if (writer != null)
                {
                    writer.Close();
                }
                if (sw != null)
                {
                    sw.Close();
                }
            }
        }

 读取 xml 文件转成  DataTable

/// <summary>
        ///  根据指定的地址获取xml文件进行转换 文件地址
        /// </summary>
        /// <param name="xmlPath"></param>
        /// <returns></returns>
        private static DataTable ConvertXMLToDataDataTable(string xmlPath)
        {
            StringReader stream = null;
            XmlTextReader reader = null;
            try
            {
                XmlDocument xmldoc = new XmlDocument();
                //根据地址加载Xml文件  
                xmldoc.Load(xmlPath);
                DataTable dt = new DataTable();
                stream = new StringReader(xmldoc.InnerXml);
                reader = new XmlTextReader(stream);
                dt.ReadXml(reader);
                return dt;
            }
            catch
            {
                return null;
            }
            finally
            {
                if (reader != null)
                    reader.Close();
                if (stream != null)
                    stream.Close();
            }
        }

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值