[原创]解决DataSet的GetXml()方法空列不返回问题

在一个DataSet中添加Table后,如果Table中存在列为空的情况,则GetXml不会把空列返回,这就造成了,在统一处理Table中的数据时,获取相关列的数据错误,

试过好几种方法,都没有达到预期的效果,先来看下DataSet的GetXml方法返回的数据格式

<NewDataSet>
<Table1>
<OID>20002</OID>
<NAME>sfsfsfsf</NAME>
<ISUSED>1</ISUSED>
<TASKTYPE>1</TASKTYPE>
<TASKDATE>2011-11-27</TASKDATE>
<TASKTIME>19:36:15</TASKTIME>
</Table1>
<Table1>
<OID>20001</OID>
<NAME>测试1</NAME>
<ISUSED>1</ISUSED>
<TASKTYPE>1</TASKTYPE>
<TASKDATE>2011-12-27</TASKDATE>
<TASKTIME>16:44:15</TASKTIME>
</Table1>
<Table2>
<OID>20001</OID>
<TASKOID>20001</TASKOID>
<PLUGINSID>PanERP.WF.FlowEngine.GetTask</PLUGINSID>
<ISUSED>1</ISUSED>
<ORDERNO>1</ORDERNO>
</Table2>
<Table3>
<PLUGINSOID>20001</PLUGINSOID>
<PARAMID>taskID</PARAMID>
<ORDERNO>0</ORDERNO>
</Table3>
</NewDataSet>

这个格式相对比较简单,干脆自己写个方法实现以下,免得查找资料浪费太多时间,废话不多说,上代码才是王道

        /// <summary>
/// 获取DataSet的Xml格式
/// </summary>
/// <param name="tableName">名称 Table1</param>
/// <param name="table">DataTable</param>
private string GetDataSetXml(string tableName, DataTable table)
{
string str = string.Empty;
for (int i = 0; i < table.Rows.Count; i++)
{
str += "<" + tableName + ">";
for (int j = 0; j < table.Columns.Count; j++)
{
string clName = table.Columns[j].ColumnName;
str += "<" + clName + ">" + table.Rows[i][clName].ToString() + "</" + clName + ">";
}
str += "</" + tableName + ">";
}
return str;
}



原文地址:https://www.cnblogs.com/xiangboren/p/2303922.html