Dataset.GetXML() method doesn't Return Null Values. Any Solution?

N

Nanda

Hi All,

Thanks for u r Valuable postings.
Here is a Problem for me.

I need to reprsent the NULL value of a column in Database in an XML
File as follows.

<Employees>
<Employee>
<Name>John</Name>
</Addr>
<City>NewYork</City>
</Employee>
</Employees>

Here </Addr> represents a null field in Database.
But using Dataset.GetXML() method I am getting the XML O/p as follows.
<Employees>
<Employee>
<Name>John</Name>
<City>NewYork</City>
</Employee>
</Employees>

Can Any body help me from this situation?
Thanks in Advance
Regards
Nanda
 
K

Kalpesh

Hi,

This is because it is containing NULL (DBNull.Value) - it is being
ignored.
Maybe, you can traverse for column having DBNull.Value & make it blank

Then, I guess it should emit XML the way you want

HTH
Kalpesh
 
Joined
May 1, 2008
Messages
2
Reaction score
0
GetXML method with null columns

private void setNullToDefVals(ref DataSet dsXML)
{
try
{
if(dsXML.Tables.Count > 0)
{
for(int index = 0; index < dsXML.Tables.Count; index++)
{
if(dsXML.Tables[index].Rows.Count > 0)
{
for(int rindex= 0; rindex < dsXML.Tables[index].Rows.Count; rindex++)
{
for(int cindex=0; cindex < dsXML.Tables[index].Columns.Count; cindex++)
{
if(dsXML.Tables[index].Rows[rindex][cindex] == System.DBNull.Value)
{
DateTime defdate = new DateTime(2000,1,1);
if(dsXML.Tables[index].Columns[cindex].DataType == System.Type.GetType("System.String"))
dsXML.Tables[index].Rows[rindex][cindex] = "";
else if(dsXML.Tables[index].Columns[cindex].DataType == System.Type.GetType("System.Int32"))
dsXML.Tables[index].Rows[rindex][cindex] = 0;
else if(dsXML.Tables[index].Columns[cindex].DataType == System.Type.GetType("System.DateTime"))
dsXML.Tables[index].Rows[rindex][cindex] = defdate;
else if(dsXML.Tables[index].Columns[cindex].DataType == System.Type.GetType("System.Decimal"))
dsXML.Tables[index].Rows[rindex][cindex] = 0.0;
else
{
// dsXML.Tables[index].Columns[cindex].DataType = System.Type.GetType("System.String");
// dsXML.Tables[index].Rows[rindex][cindex] = "";
}
}
}
}
}
}
}
}
catch(Exception ex)
{
int i =0;
}
}
 
Joined
May 1, 2008
Messages
2
Reaction score
0
Blank tags for DataSet GetXML for null values

Can also use this function before adding default values to get only valuesless tags:

private void createVarcharColumns(ref DataSet dsXML)
{
try
{
if (dsXML.Tables.Count > 0)
{
for (int index = 0; index < dsXML.Tables.Count; index++)
{
if (dsXML.Tables[index].Rows.Count > 0)
{
for (int cindex = 0; cindex < dsXML.Tables[index].Columns.Count; cindex++)
{
if (dsXML.Tables[index].Columns[cindex].DataType != System.Type.GetType("System.String"))
{
string oldColName = dsXML.Tables[index].Columns[cindex].ColumnName;
if (oldColName != "LOCATIONID" && oldColName != "SUBLOCATIONID")
{
DataColumn objColmn = new DataColumn(dsXML.Tables[index].Columns[cindex].ColumnName + "Def", System.Type.GetType("System.String"));
dsXML.Tables[index].Columns.Add(objColmn);
string newColName = objColmn.ColumnName;
int newcindex = getColumnIndex(dsXML.Tables[index], newColName);
for (int rindex = 0; rindex < dsXML.Tables[index].Rows.Count; rindex++)
{
if (dsXML.Tables[index].Rows[rindex][cindex] == System.DBNull.Value)
{
dsXML.Tables[index].Rows[rindex][newcindex] = "";
}
else
dsXML.Tables[index].Rows[rindex][newcindex] = dsXML.Tables[index].Rows[rindex][cindex].ToString();
}
dsXML.Tables[index].Columns.Remove(dsXML.Tables[index].Columns[cindex].ColumnName);
newcindex = getColumnIndex(dsXML.Tables[index], newColName);
dsXML.Tables[index].Columns[newcindex].ColumnName = oldColName;
cindex--;
}
}
}
}
}
}
}
catch (Exception ex)
{
}
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top