2010-05-26 2 views
3

Я хочу создать XML-файл моего DataSet с использованием .writeXml-функции. Если запись в моем DataSet была пустой, я хотел бы иметь пустую тег вместо отсутствующего тега:dataSet.writeXml не пишет пустой тег, если поле было пустым. C#

пример того, как это должно выглядеть, как если бы Джон не имел возраста:

<MyDataSet> 
    <ID>8613458</ID> 
    <AW_ID>37534778</AW_ID> 
    <NAME>Peter</NAME> 
    <AGE>22</AGE> 
    </MyDataSet> 
    <MyDataSet> 
    <ID>8613459</ID> 
    <AW_ID>37534779</AW_ID> 
    <NAME>John</NAME> 
    <AGE></AGE> 
    </MyDataSet> 

примера того, как выглядит как сейчас:

<MyDataSet> 
    <ID>8613458</ID> 
    <AW_ID>37534778</AW_ID> 
    <NAME>Peter</NAME> 
    <AGE>22</AGE> 
    </MyDataSet> 
    <MyDataSet> 
    <ID>8613459</ID> 
    <AW_ID>37534779</AW_ID> 
    <NAME>John</NAME> 
    </MyDataSet> 

Знаете ли вы, что мне нужно делать? Спасибо за помощь!

ответ

1

Я не думаю, что вы можете изменить так, чтобы он записывал пустые значения, если они NULL, поскольку NULL отличается от пустого.
Однако, если тип данных является строкой, просто просмотрите набор данных и измените любые NULL на пустые строки перед тем, как записать их в XML, и вы получите нужный эффект.

+2

Спасибо. В моем случае это не сработало, потому что у меня не было ни одной струны. Но я нашел другое решение для своей проблемы: вместо использования .WriteXml (sting fileName) Я использовал использование .WriteXml (string fileName, XmlWriteMode WriteSchema) -> этот результат состоит в том, что DBNull вместо этого был заменен на «0» недостающего тега – Christoph

+0

@ Кристоф спасибо, это решение спасло мне настоящую головную боль :) – QFDev

0

Вы можете использовать WriteXmlSchema (и ReadXmlSchema) для хранения схемы для таблицы. Это будет означать, что хотя столбцы NULL не включены в XML, они все еще корректно импортируются.

using (SqlCommand sqlCommand = new SqlCommand(QUERY, CONNECTION)) 
{ 
    SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlCommand); 
    DataSet dataSet = new DataSet(); 
    dataAdapter.Fill(dataSet); 
    dataSet.WriteXmlSchema(@"C:\TEMP\Schema.xsd"); 
    dataSet.Tables[0].WriteXml(@"C:\TEMP\Output.xml"); 
} 

Там это действительно полезная статья на него здесь: Save Dataset to XML With Null Values

Смежные вопросы