DataSet.GetXml не возвращает нулевые результаты - PullRequest
5 голосов
/ 08 июня 2009

всякий раз, когда я конвертирую DatSet в XML с DataSet.GetXml, любое нулевое значение игнорируется, поэтому, где я ожидаю этого:

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

Вместо этого я получаю:

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

Какой-нибудь быстрый и грязный способ справиться с этим? Спасибо

EDIT: Я думаю, что решение будет использовать WriteXml. Может ли кто-нибудь предоставить мне пример его использования, БЕЗ записи в файл, но получая строку, как это делает GetXml? Спасибо

Ответы [ 2 ]

4 голосов
/ 01 июля 2012

Это прекрасно работает:

        //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);
4 голосов
/ 08 июня 2009

Проблема перечислена здесь в статье Microsoft KB:

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

Проблема в том, что к вашему набору данных не присоединена схема, указывающая, что этот элемент должен быть записан.

Я не верю, что использование WriteXml решит проблему, как говорится в документации, "Calling this method is identical to calling WriteXml with XmlWriteMode set to IgnoreSchema.", но вы можете попробовать - вот эквивалентный код:

StringWriter sw = new StringWriter();
ds.WriteXml(sw);
string outputXml = sw.ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...