Sunday, 5 April 2015

dataSet.GetXml() doesn't return xml for null or blank columns


First clone the DataTable, make all columns of type string, replace all null values with string.empty, then call GetXml on a new DataSet.
//First bind XML data in to data set..objDataSet
DataTable dt = objDataSet.Tables[0];
DataTable dtCloned = dt.Clone();
foreach (DataColumn dc in dtCloned.Columns)
dc.DataType = typeof(string);
foreach (DataRow row in dt.Rows)
{
dtCloned.ImportRow(row);
}
foreach (DataRow row in dtCloned.Rows)
{
for (int i = 0; i < dtCloned.Columns.Count; i++)
{
dtCloned.Columns[i].ReadOnly = false;
if (string.IsNullOrEmpty(row[i].ToString()))
row[i] = string.Empty;
}
}
DataSet ds = new DataSet();
ds.Tables.Add(dtCloned);
string xml = ds.GetXml();
view raw gistfile1.cs hosted with ❤ by GitHub