2009-06-08 9 views
4

chaque fois que je convertir un DATSET en un XML avec DataSet.GetXml, une valeur nulle est ignorée, donc, où je m'y attendais:DataSet.GetXml ne pas retourner des résultats nuls

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

Je reçois ceci:

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

Une manière rapide et sale de gérer cela? Merci

EDIT: Je pense qu'une solution utiliserait WriteXml. Quelqu'un pourrait-il me fournir un exemple d'utilisation sans écrire dans un fichier mais en obtenant une chaîne comme le fait GetXml? Merci

Répondre

4

Le problème est répertorié ici dans l'article Microsoft KB:

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

Le problème est que vous avez pas de schéma attaché à votre ensemble de données qui spécifie que cet élément doit être écrit.

Je ne crois pas que l'utilisation WriteXml va résoudre le problème, comme l'indique la documentation, "Calling this method is identical to calling WriteXml with XmlWriteMode set to IgnoreSchema." mais vous êtes libre d'essayer - voici le code équivalent:

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

Qu'en est-il de l'appeler avec XmlWriteMode défini sur WriteSchema? – pistacchio

+0

Je vais être honnête, je ne suis pas sûr - tout ce qui devrait faire est d'inclure un schéma en ligne dans la sortie - Je doute qu'il change le XML lui-même. – samjudson

4

Cela fonctionne bien:

 //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

Cela fonctionne mais notez que le xml dans le littéral de chaîne n'aura toujours pas d'éléments pour les colonnes constituées uniquement de valeurs nulles. – Coxy

Questions connexes