2009-06-08 5 views
4

zurückkehren, wenn ich ein DatSet in eine XML mit DataSet.GetXml konvertieren, jede Null-Wert wird ignoriert, so, wo ich diese erwarten:DataSet.GetXml nicht null Ergebnisse

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

ich diese statt:

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

Jeder schnelle und schmutzige Weg, damit umzugehen? Danke

EDIT: Ich denke, eine Lösung würde WriteXml verwenden. Könnte mir jemand ein Beispiel dafür liefern, dass ich es OHNE in eine Datei schreiben, sondern eine Zeichenfolge wie GetXml verwenden soll? Dank

Antwort

4

Das Problem hier in dem Microsoft Knowledge Base-Artikel aufgeführt wird:

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

Das Problem ist, dass Sie kein Schema haben ihren Datensatz angebracht, dass das Element gibt schrieben werden soll.

Ich glaube nicht, dass WriteXml verwendet, wird das Problem, wie die Dokumentation Staaten, "Calling this method is identical to calling WriteXml with XmlWriteMode set to IgnoreSchema." lösen, aber Sie sind frei, zu versuchen - hier ist der entsprechende Code:

StringWriter sw = new StringWriter(); 
ds.WriteXml(sw); 
string outputXml = sw.ToString(); 
+0

Was ist mit dem Aufruf mit XmlWriteMode auf WriteSchema festgelegt? – pistacchio

+0

Ich bin ehrlich, ich bin mir nicht sicher - alles, was tun sollte, ist ein Inline-Schema in der Ausgabe enthalten - Ich bezweifle, dass es die eigentliche XML selbst ändert. – samjudson

4

Dies funktioniert:

 //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); 
+0

Das funktioniert, aber beachten Sie, dass das XML im Zeichenfolgenliteral immer noch keine Elemente für die Spalten hat, die nur aus Nullwerten bestehen. – Coxy

Verwandte Themen