Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DataSet.GetXml not returning null results

whenever I convert a DatSet into an XML with DataSet.GetXml, any null value is ignored, so, where i expect this:

<value1>a</value1>
<value2></value2>
<value3>c</value3>

I get this instead:

<value1>a</value1>
<value3>c</value3>

Any quick and dirty way to handle this? Thanks

EDIT: I think a solution would be using WriteXml. Could anyone provide me with a sample of using it WITHOUT writing to a file but getting a string just like GetXml does? Thanks

like image 642
pistacchio Avatar asked Jun 08 '09 07:06

pistacchio


2 Answers

The problem is listed here in the Microsoft KB article:

http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q317961

The problem is that you have no schema attached to your dataset that specifies that that element should be written out.

I don't believe that using WriteXml will solve the problem, as the documentation states, "Calling this method is identical to calling WriteXml with XmlWriteMode set to IgnoreSchema." but you are free to try - here is the equivalent code:

StringWriter sw = new StringWriter();
ds.WriteXml(sw);
string outputXml = sw.ToString();
like image 58
samjudson Avatar answered Nov 17 '22 00:11

samjudson


This works fine:

        //convert to xml with the DataSet schema:
        StringWriter writer = new StringWriter();
        ds.WriteXml(writer, XmlWriteMode.WriteSchema);
        string xml = writer.ToString();

        //Convert from xml to DataSet:
        StringReader stringReader = new StringReader(response);
        DataSet ds = new DataSet();
        ds.ReadXml(stringReader);
like image 32
Hadas Avatar answered Nov 16 '22 23:11

Hadas