2010-05-26 104 views
3

我想使用.writeXml函數創建DataSet的XML。 如果我的數據集的條目是空的,我想有一個空的標籤,而不是缺少標籤:如果字段爲空,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與空不同。
但是,如果age的數據類型是字符串,則只需遍歷數據集並在將任何NULL寫入空字符串之前將其更改爲空字符串,然後獲得所需的效果。

+2

感謝。沒有在我的情況下工作,因爲我沒有任何字符串。 但我發現我的問題的另一種解決方案: 而不是使用.WriteXml(sting fileName)我使用.WriteXml(字符串文件名,XmlWriteMode WriteSchema) - >這個結果是,DBNull變成了「0」丟失標籤 – Christoph 2010-05-26 16:14:57

+0

@Christoph謝謝你,這個解決方案讓我真正頭痛:) – QFDev 2014-07-17 13:32:25

0

您可以使用WriteXmlSchema(和ReadXmlSchema)來存儲表的模式。這將意味着雖然XML列中不包含NULL列,但它們仍然可以正確導入。

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