datatable 转成 xml 的问题,好难啊。。格式不会啊

TK_Knigth 2013-06-26 02:43:06
标准格式是这样的
<RESULT>
<SQM>授权码</SQM>
<DATA>
<RS>
<ZDBH>字典编号</ZDBH>
<MC>名称</MC>
<BZ>备注</BZ>
</RS>
</DATA>
</RESULT>

代码输出的格式现在是这样啊
<DocumentElement>
<DATA>
<ZDBH>字典编号</ZDBH>
<MC>名称</MC>
<BZ>备注</BZ>
</DATA>
</DocumentElement>

怎么把 <DocumentElement> 去掉啊,还要加入 <RS>

源码。
public string CDataToXml(DataTable dt)
{
if (dt != null)
{
MemoryStream ms = null;
XmlTextWriter XmlWt = null;
try
{
ms = new MemoryStream();
//根据ms实例化XmlWt
XmlWt = new XmlTextWriter(ms, Encoding.Unicode);

//获取ds中的数据
dt.WriteXml(XmlWt);

int count = (int)ms.Length;
byte[] temp = new byte[count];
ms.Seek(0, SeekOrigin.Begin);
ms.Read(temp, 0, count);
//返回Unicode编码的文本
UnicodeEncoding ucode = new UnicodeEncoding();
string returnValue = ucode.GetString(temp).Trim();
return returnValue;
}
catch (System.Exception ex)
{
throw ex;
}
finally
{
//释放资源
if (XmlWt != null)
{
XmlWt.Close();
ms.Close();
ms.Dispose();
}
}
}
else
{
return "";
}
}

public static void Main(string[] atgs)
{
Program program = new Program();
DataTable dt = program.GetDataTable();

dt.TableName = "DATA";
Console.WriteLine(program.CDataToXml(dt));
Console.ReadLine();


}
...全文
282 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_19088073 2014-10-22
  • 打赏
  • 举报
回复

public static string DataTableToXmlString(DataTable dtSource)
        {
            if (dtSource != null)
            {
                MemoryStream ms = null;
                XmlTextWriter XmlWt = null;
                try
                {
                    ms = new MemoryStream();
                    //根据ms实例化XmlWt
                    XmlWt = new XmlTextWriter(ms, Encoding.Unicode);
                    //获取ds中的数据
                    dtSource.WriteXml(XmlWt);
                    int count = (int)ms.Length;
                    byte[] temp = new byte[count];
                    ms.Seek(0, SeekOrigin.Begin);
                    ms.Read(temp, 0, count);
                    //返回Unicode编码的文本
                    UnicodeEncoding ucode = new UnicodeEncoding();
                    string returnValue = ucode.GetString(temp).Trim();
                    return returnValue;
                }
                catch (System.Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    //释放资源
                    if (XmlWt != null)
                    {
                        XmlWt.Close();
                        ms.Close();
                        ms.Dispose();
                    }
                }
            }
            else
            {
                return "";
            }
        }

我用这个方法, 将datatable转成XML字符串, 再用 xmlDoc.LoadXml方法读取字符串时 出现错误:“根级别上的数据无效。 第 1 行,位置 1。” 这个要怎么解决?
qq_19088073 2014-10-22
  • 打赏
  • 举报
回复
DataToXml方法, 将datatable转成XML字符串, 再用 xmlDoc.LoadXml方法读取字符串时 出现错误:“根级别上的数据无效。 第 1 行,位置 1。” 这个要怎么解决?
黄小俊 2014-05-19
  • 打赏
  • 举报
回复
XmlDocument doc = new XmlDocument(); doc.LoadXml(returnValue); return doc.DocumentElement.InnerXml; 不要 <documentelement>节点的string 你的授权码可以自己在doc添加个节点然后在不要<documentelement>输出即可
sjrw96004 2013-09-30
  • 打赏
  • 举报
回复
上面代码有一段我看不明白: xOperate.SaveXml(strXmlString, strXmlFullDir); 这个xOperate对象的SaveXml方法是怎么会事?
tcmakebest 2013-06-26
  • 打赏
  • 举报
回复
用 XmlWriter,想要啥样就可以啥样
TK_Knigth 2013-06-26
  • 打赏
  • 举报
回复
引用 10 楼 qingfeng_wu 的回复:
其实写正则表达式,是一种非常有效的方法,而且也是一种最实用的方法,节省去了很多你没有必要的代码。
正则表达式,。。。还不会。。
TK_Knigth 2013-06-26
  • 打赏
  • 举报
回复
引用 9 楼 qingfeng_wu 的回复:
可以写正则表达式,也是很简单,将代码的<data>这个标签变为<data><rs>,将</data>这个标签变为</rs></data>,授权码也一样,将<result>这个标签变为<result><sqm>授权码</sql>,这样说是不是很明了了。
<SQM>授权码</SQM> 这个是数据库里面读出来的,在datatable 里面有的。。。还有啊,好像在datatable 这个类里面 没有 列 删除的方法啊。。修改指定的节点的方法也有??求给点提示啊
火拼阿三 2013-06-26
  • 打赏
  • 举报
回复
引用 12 楼 T_Knigth 的回复:
[quote=引用 5 楼 nice_fish 的回复:] [quote=引用 4 楼 xiezhongjun 的回复:] 加我QQ157636916,给你发操作的相关源码,但是分数要全给我,我的类库很全哦
呵呵呵呵[/quote]。。。。。。。。。。[/quote]
TK_Knigth 2013-06-26
  • 打赏
  • 举报
回复
引用 5 楼 nice_fish 的回复:
[quote=引用 4 楼 xiezhongjun 的回复:] 加我QQ157636916,给你发操作的相关源码,但是分数要全给我,我的类库很全哦
呵呵呵呵[/quote]。。。。。。。。。。
HooverHuang 2013-06-26
  • 打赏
  • 举报
回复
引用 8 楼 T_Knigth 的回复:
[quote=引用 3 楼 HooverHuang 的回复:] 我之前也被这个问题困扰过,你通过自带的序列化方式转换时,确实默认这个开头。 起始解决起来很简单,你直接把这个替换掉,或者自己创建一个根节点,然后追加后面的内容。 下面是我的帮助类,你可以参考。对了,在转换时候一定要给你的DataTable加上表名,否则容易出问题。
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Xml;
using System.IO;

namespace ccn.CoreLib.Xml
{
    
    public class xToConvert
    {

        #region   数据转换

        #region  XML文件转换为DataTable
        /// <summary>
        /// XML 文件转换为DataTable
        /// </summary>
        /// <param name="strXmlFullDIr"></param>
        /// <param name="strRootnode"></param>
        /// <returns></returns>
        public static DataTable XmlToDataTable(string strXmlFullDir, string strRootnode, string strTableName)
        {
            XmlDocument doc = new XmlDocument();
            DataTable dtData = new DataTable(strTableName);
            DataSet dsData = new DataSet();
            try
            {
                doc.Load(strXmlFullDir);
                XmlNode songNode = doc.SelectSingleNode(strRootnode);
                string colName;
                if (songNode != null)
                {
                    for (int i = 0; i < songNode.ChildNodes.Count; i++)
                    {
                        colName = songNode.ChildNodes.Item(i).Name;
                        dtData.Columns.Add(colName);
                    }
                }
                dsData.Tables.Add(dtData);
                dsData.ReadXml(strXmlFullDir);
                if (dsData != null && dsData.Tables.Count > 0)
                {
                    dtData = dsData.Tables[0];
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return dtData;
        }
        #endregion

        #region XML结构字符转换为DataTable
        /// <summary>
        /// Xml转换为DataTable
        /// </summary>
        /// <param name="xmlStr"></param>
        /// <returns></returns>
        public static DataTable XmlStringToDataTable(string strXml)
        {
            if (!string.IsNullOrEmpty(strXml))
            {
                StringReader StrStream = null;
                XmlTextReader Xmlrdr = null;
                try
                {
                    DataSet ds = new DataSet();
                    //读取字符串中的信息
                    StrStream = new StringReader(strXml);
                    //获取StrStream中的数据
                    Xmlrdr = new XmlTextReader(StrStream);
                    //ds获取Xmlrdr中的数据                
                    ds.ReadXmlSchema(Xmlrdr);
                    if (ds != null && ds.Tables.Count > 0)
                    {
                        return ds.Tables[0];
                    }
                    else
                    {
                        return null;
                    }
                }
                catch (Exception e)
                {
                    throw e;
                }
                finally
                {
                    //释放资源
                    if (Xmlrdr != null)
                    {
                        Xmlrdr.Close();
                        StrStream.Close();
                        StrStream.Dispose();
                    }
                }
            }
            else
            {
                return null;
            }
        }
        #endregion

        #region DataTable转换成XML结构的文本
        /// <summary>
        ///  DataTable转换成XML结构的文本
        /// </summary>
        /// <param name="dtSource"></param>
        /// <returns></returns>
        public static string DataTableToXmlString(DataTable dtSource)
        {
            if (dtSource != null)
            {
                MemoryStream ms = null;
                XmlTextWriter XmlWt = null;
                try
                {
                    ms = new MemoryStream();
                    //根据ms实例化XmlWt
                    XmlWt = new XmlTextWriter(ms, Encoding.Unicode);
                    //获取ds中的数据
                    dtSource.WriteXml(XmlWt);
                    int count = (int)ms.Length;
                    byte[] temp = new byte[count];
                    ms.Seek(0, SeekOrigin.Begin);
                    ms.Read(temp, 0, count);
                    //返回Unicode编码的文本
                    UnicodeEncoding ucode = new UnicodeEncoding();
                    string returnValue = ucode.GetString(temp).Trim();
                    return returnValue;
                }
                catch (System.Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    //释放资源
                    if (XmlWt != null)
                    {
                        XmlWt.Close();
                        ms.Close();
                        ms.Dispose();
                    }
                }
            }
            else
            {
                return "";
            }
        }
        #endregion

        #region  DataTable转换成XML文件
        /// <summary>
        ///  DataTable转换成XML结构的文本
        /// </summary>
        /// <param name="strXmlFullDir"></param>
        /// <param name="dtSource"></param>
        public static bool DataTableToXmlFile(string strXmlFullDir, DataTable dtSource)
        {
            try
            {
                string strXmlString = DataTableToXmlString(dtSource);
                strXmlString = FormatXml(strXmlString);
                if (!string.IsNullOrEmpty(strXmlString))
                {
                    xOperate.SaveXml(strXmlString, strXmlFullDir);
                }
                if (File.Exists(strXmlFullDir))
                {
                    return true;
                }
                else
                {
                    return false;
                }

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }



        /// <summary>
        /// XML结构文本格式化
        /// </summary>
        /// <param name="sUnformattedXml">字符串</param>
        /// <returns></returns>
        public static string FormatXml(string sUnformattedXml)
        {
            XmlDocument xd = new XmlDocument();
            xd.LoadXml(sUnformattedXml);
            StringBuilder sb = new StringBuilder();
            StringWriter sw = new StringWriter(sb);
            XmlTextWriter xtw = null;
            try
            {
                xtw = new XmlTextWriter(sw);
                xtw.Formatting = Formatting.Indented;
                xtw.Indentation = 1;
                xtw.IndentChar = '\t';
                xd.WriteTo(xtw);
            }
            finally
            {
                if (xtw != null)
                    xtw.Close();
            }
            return sb.ToString();
        }


        #endregion

        #endregion

    }
}
你这个最全了,看是看懂了,可是我在想能不能再 //获取ds中的数据 dtSource.WriteXml(XmlWt); 这个之前对 dtSource 进行处理呢?比如插入节点啊,修改啊,把里面的只分开啊之类的[/quote]你给你传入的DataSet取个名字,转化的Table取个名字,应该就可以了,那个根节点应该换成你取的名字了,你试下
吴青峰 2013-06-26
  • 打赏
  • 举报
回复
其实写正则表达式,是一种非常有效的方法,而且也是一种最实用的方法,节省去了很多你没有必要的代码。
吴青峰 2013-06-26
  • 打赏
  • 举报
回复
可以写正则表达式,也是很简单,将代码的<data>这个标签变为<data><rs>,将</data>这个标签变为</rs></data>,授权码也一样,将<result>这个标签变为<result><sqm>授权码</sql>,这样说是不是很明了了。
TK_Knigth 2013-06-26
  • 打赏
  • 举报
回复
引用 3 楼 HooverHuang 的回复:
我之前也被这个问题困扰过,你通过自带的序列化方式转换时,确实默认这个开头。 起始解决起来很简单,你直接把这个替换掉,或者自己创建一个根节点,然后追加后面的内容。 下面是我的帮助类,你可以参考。对了,在转换时候一定要给你的DataTable加上表名,否则容易出问题。
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Xml;
using System.IO;

namespace ccn.CoreLib.Xml
{
    
    public class xToConvert
    {

        #region   数据转换

        #region  XML文件转换为DataTable
        /// <summary>
        /// XML 文件转换为DataTable
        /// </summary>
        /// <param name="strXmlFullDIr"></param>
        /// <param name="strRootnode"></param>
        /// <returns></returns>
        public static DataTable XmlToDataTable(string strXmlFullDir, string strRootnode, string strTableName)
        {
            XmlDocument doc = new XmlDocument();
            DataTable dtData = new DataTable(strTableName);
            DataSet dsData = new DataSet();
            try
            {
                doc.Load(strXmlFullDir);
                XmlNode songNode = doc.SelectSingleNode(strRootnode);
                string colName;
                if (songNode != null)
                {
                    for (int i = 0; i < songNode.ChildNodes.Count; i++)
                    {
                        colName = songNode.ChildNodes.Item(i).Name;
                        dtData.Columns.Add(colName);
                    }
                }
                dsData.Tables.Add(dtData);
                dsData.ReadXml(strXmlFullDir);
                if (dsData != null && dsData.Tables.Count > 0)
                {
                    dtData = dsData.Tables[0];
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return dtData;
        }
        #endregion

        #region XML结构字符转换为DataTable
        /// <summary>
        /// Xml转换为DataTable
        /// </summary>
        /// <param name="xmlStr"></param>
        /// <returns></returns>
        public static DataTable XmlStringToDataTable(string strXml)
        {
            if (!string.IsNullOrEmpty(strXml))
            {
                StringReader StrStream = null;
                XmlTextReader Xmlrdr = null;
                try
                {
                    DataSet ds = new DataSet();
                    //读取字符串中的信息
                    StrStream = new StringReader(strXml);
                    //获取StrStream中的数据
                    Xmlrdr = new XmlTextReader(StrStream);
                    //ds获取Xmlrdr中的数据                
                    ds.ReadXmlSchema(Xmlrdr);
                    if (ds != null && ds.Tables.Count > 0)
                    {
                        return ds.Tables[0];
                    }
                    else
                    {
                        return null;
                    }
                }
                catch (Exception e)
                {
                    throw e;
                }
                finally
                {
                    //释放资源
                    if (Xmlrdr != null)
                    {
                        Xmlrdr.Close();
                        StrStream.Close();
                        StrStream.Dispose();
                    }
                }
            }
            else
            {
                return null;
            }
        }
        #endregion

        #region DataTable转换成XML结构的文本
        /// <summary>
        ///  DataTable转换成XML结构的文本
        /// </summary>
        /// <param name="dtSource"></param>
        /// <returns></returns>
        public static string DataTableToXmlString(DataTable dtSource)
        {
            if (dtSource != null)
            {
                MemoryStream ms = null;
                XmlTextWriter XmlWt = null;
                try
                {
                    ms = new MemoryStream();
                    //根据ms实例化XmlWt
                    XmlWt = new XmlTextWriter(ms, Encoding.Unicode);
                    //获取ds中的数据
                    dtSource.WriteXml(XmlWt);
                    int count = (int)ms.Length;
                    byte[] temp = new byte[count];
                    ms.Seek(0, SeekOrigin.Begin);
                    ms.Read(temp, 0, count);
                    //返回Unicode编码的文本
                    UnicodeEncoding ucode = new UnicodeEncoding();
                    string returnValue = ucode.GetString(temp).Trim();
                    return returnValue;
                }
                catch (System.Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    //释放资源
                    if (XmlWt != null)
                    {
                        XmlWt.Close();
                        ms.Close();
                        ms.Dispose();
                    }
                }
            }
            else
            {
                return "";
            }
        }
        #endregion

        #region  DataTable转换成XML文件
        /// <summary>
        ///  DataTable转换成XML结构的文本
        /// </summary>
        /// <param name="strXmlFullDir"></param>
        /// <param name="dtSource"></param>
        public static bool DataTableToXmlFile(string strXmlFullDir, DataTable dtSource)
        {
            try
            {
                string strXmlString = DataTableToXmlString(dtSource);
                strXmlString = FormatXml(strXmlString);
                if (!string.IsNullOrEmpty(strXmlString))
                {
                    xOperate.SaveXml(strXmlString, strXmlFullDir);
                }
                if (File.Exists(strXmlFullDir))
                {
                    return true;
                }
                else
                {
                    return false;
                }

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }



        /// <summary>
        /// XML结构文本格式化
        /// </summary>
        /// <param name="sUnformattedXml">字符串</param>
        /// <returns></returns>
        public static string FormatXml(string sUnformattedXml)
        {
            XmlDocument xd = new XmlDocument();
            xd.LoadXml(sUnformattedXml);
            StringBuilder sb = new StringBuilder();
            StringWriter sw = new StringWriter(sb);
            XmlTextWriter xtw = null;
            try
            {
                xtw = new XmlTextWriter(sw);
                xtw.Formatting = Formatting.Indented;
                xtw.Indentation = 1;
                xtw.IndentChar = '\t';
                xd.WriteTo(xtw);
            }
            finally
            {
                if (xtw != null)
                    xtw.Close();
            }
            return sb.ToString();
        }


        #endregion

        #endregion

    }
}
你这个最全了,看是看懂了,可是我在想能不能再 //获取ds中的数据 dtSource.WriteXml(XmlWt); 这个之前对 dtSource 进行处理呢?比如插入节点啊,修改啊,把里面的只分开啊之类的
TK_Knigth 2013-06-26
  • 打赏
  • 举报
回复
引用 4 楼 xiezhongjun 的回复:
加我QQ157636916,给你发操作的相关源码,但是分数要全给我,我的类库很全哦
给我解决这个,我就马上给你,还追加分。。。。 我要把这个变成 <DocumentElement> <DATA> <ZDBH>字典编号</ZDBH> <MC>名称</MC> <BZ>备注</BZ> <SQM>授权码</SQM> </DATA> </DocumentElement> 变成 <RESULT> <SQM>授权码</SQM> <DATA> <RS> <ZDBH>字典编号</ZDBH> <MC>名称</MC> <BZ>备注</BZ> </RS> </DATA> </RESULT> </DocumentElement> 这个已经被我改好了 就差 <rs> 和 把 SQM>授权码</SQM> 提出来放到 <data> 和 <REQUEST>
TK_Knigth 2013-06-26
  • 打赏
  • 举报
回复
引用 1 楼 qingfeng_wu 的回复:
不能,而且很简单: DataSet ds = new DataSet(); ds.Tables.Add(dt); string xml = ds.GetXml(); 这个是你表格对象,名称你自己定,自己研究下xml的格式,就可以了。
我要把这个变成 <DocumentElement> <DATA> <ZDBH>字典编号</ZDBH> <MC>名称</MC> <BZ>备注</BZ> <SQM>授权码</SQM> </DATA> </DocumentElement> 变成 <RESULT> <SQM>授权码</SQM> <DATA> <RS> <ZDBH>字典编号</ZDBH> <MC>名称</MC> <BZ>备注</BZ> </RS> </DATA> </RESULT> </DocumentElement> 这个已经被我改好了 就差 <rs> 和 把 SQM>授权码</SQM> 提出来放到 <data> 和 <REQUEST>
  • 打赏
  • 举报
回复
引用 4 楼 xiezhongjun 的回复:
加我QQ157636916,给你发操作的相关源码,但是分数要全给我,我的类库很全哦
呵呵呵呵
aellonxie 2013-06-26
  • 打赏
  • 举报
回复
加我QQ157636916,给你发操作的相关源码,但是分数要全给我,我的类库很全哦
HooverHuang 2013-06-26
  • 打赏
  • 举报
回复
我之前也被这个问题困扰过,你通过自带的序列化方式转换时,确实默认这个开头。 起始解决起来很简单,你直接把这个替换掉,或者自己创建一个根节点,然后追加后面的内容。 下面是我的帮助类,你可以参考。对了,在转换时候一定要给你的DataTable加上表名,否则容易出问题。
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Xml;
using System.IO;

namespace ccn.CoreLib.Xml
{
    
    public class xToConvert
    {

        #region   数据转换

        #region  XML文件转换为DataTable
        /// <summary>
        /// XML 文件转换为DataTable
        /// </summary>
        /// <param name="strXmlFullDIr"></param>
        /// <param name="strRootnode"></param>
        /// <returns></returns>
        public static DataTable XmlToDataTable(string strXmlFullDir, string strRootnode, string strTableName)
        {
            XmlDocument doc = new XmlDocument();
            DataTable dtData = new DataTable(strTableName);
            DataSet dsData = new DataSet();
            try
            {
                doc.Load(strXmlFullDir);
                XmlNode songNode = doc.SelectSingleNode(strRootnode);
                string colName;
                if (songNode != null)
                {
                    for (int i = 0; i < songNode.ChildNodes.Count; i++)
                    {
                        colName = songNode.ChildNodes.Item(i).Name;
                        dtData.Columns.Add(colName);
                    }
                }
                dsData.Tables.Add(dtData);
                dsData.ReadXml(strXmlFullDir);
                if (dsData != null && dsData.Tables.Count > 0)
                {
                    dtData = dsData.Tables[0];
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return dtData;
        }
        #endregion

        #region XML结构字符转换为DataTable
        /// <summary>
        /// Xml转换为DataTable
        /// </summary>
        /// <param name="xmlStr"></param>
        /// <returns></returns>
        public static DataTable XmlStringToDataTable(string strXml)
        {
            if (!string.IsNullOrEmpty(strXml))
            {
                StringReader StrStream = null;
                XmlTextReader Xmlrdr = null;
                try
                {
                    DataSet ds = new DataSet();
                    //读取字符串中的信息
                    StrStream = new StringReader(strXml);
                    //获取StrStream中的数据
                    Xmlrdr = new XmlTextReader(StrStream);
                    //ds获取Xmlrdr中的数据                
                    ds.ReadXmlSchema(Xmlrdr);
                    if (ds != null && ds.Tables.Count > 0)
                    {
                        return ds.Tables[0];
                    }
                    else
                    {
                        return null;
                    }
                }
                catch (Exception e)
                {
                    throw e;
                }
                finally
                {
                    //释放资源
                    if (Xmlrdr != null)
                    {
                        Xmlrdr.Close();
                        StrStream.Close();
                        StrStream.Dispose();
                    }
                }
            }
            else
            {
                return null;
            }
        }
        #endregion

        #region DataTable转换成XML结构的文本
        /// <summary>
        ///  DataTable转换成XML结构的文本
        /// </summary>
        /// <param name="dtSource"></param>
        /// <returns></returns>
        public static string DataTableToXmlString(DataTable dtSource)
        {
            if (dtSource != null)
            {
                MemoryStream ms = null;
                XmlTextWriter XmlWt = null;
                try
                {
                    ms = new MemoryStream();
                    //根据ms实例化XmlWt
                    XmlWt = new XmlTextWriter(ms, Encoding.Unicode);
                    //获取ds中的数据
                    dtSource.WriteXml(XmlWt);
                    int count = (int)ms.Length;
                    byte[] temp = new byte[count];
                    ms.Seek(0, SeekOrigin.Begin);
                    ms.Read(temp, 0, count);
                    //返回Unicode编码的文本
                    UnicodeEncoding ucode = new UnicodeEncoding();
                    string returnValue = ucode.GetString(temp).Trim();
                    return returnValue;
                }
                catch (System.Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    //释放资源
                    if (XmlWt != null)
                    {
                        XmlWt.Close();
                        ms.Close();
                        ms.Dispose();
                    }
                }
            }
            else
            {
                return "";
            }
        }
        #endregion

        #region  DataTable转换成XML文件
        /// <summary>
        ///  DataTable转换成XML结构的文本
        /// </summary>
        /// <param name="strXmlFullDir"></param>
        /// <param name="dtSource"></param>
        public static bool DataTableToXmlFile(string strXmlFullDir, DataTable dtSource)
        {
            try
            {
                string strXmlString = DataTableToXmlString(dtSource);
                strXmlString = FormatXml(strXmlString);
                if (!string.IsNullOrEmpty(strXmlString))
                {
                    xOperate.SaveXml(strXmlString, strXmlFullDir);
                }
                if (File.Exists(strXmlFullDir))
                {
                    return true;
                }
                else
                {
                    return false;
                }

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }



        /// <summary>
        /// XML结构文本格式化
        /// </summary>
        /// <param name="sUnformattedXml">字符串</param>
        /// <returns></returns>
        public static string FormatXml(string sUnformattedXml)
        {
            XmlDocument xd = new XmlDocument();
            xd.LoadXml(sUnformattedXml);
            StringBuilder sb = new StringBuilder();
            StringWriter sw = new StringWriter(sb);
            XmlTextWriter xtw = null;
            try
            {
                xtw = new XmlTextWriter(sw);
                xtw.Formatting = Formatting.Indented;
                xtw.Indentation = 1;
                xtw.IndentChar = '\t';
                xd.WriteTo(xtw);
            }
            finally
            {
                if (xtw != null)
                    xtw.Close();
            }
            return sb.ToString();
        }


        #endregion

        #endregion

    }
}
吴青峰 2013-06-26
  • 打赏
  • 举报
回复
dt是你要生成xml的表格对象。
吴青峰 2013-06-26
  • 打赏
  • 举报
回复
不能,而且很简单: DataSet ds = new DataSet(); ds.Tables.Add(dt); string xml = ds.GetXml(); 这个是你表格对象,名称你自己定,自己研究下xml的格式,就可以了。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧