2009-01-29 44 views
1

我正在構建一個web服務,它有一個webmethod返回一個Dataset對象。強制XML標記在序列化數據集時出現

我遇到問題當其關聯值爲空時,不會寫入XML標記。

一個簡單的例子是如下:

ID Name Text 
-- ------ ------------- 
1 NULL  test1    <------- null value 
2 toto  test2 
3 tata  test3 

獲取XML序列化到:

<table roworder="1"> 
    <id> 1  </id>   <----- element missing when value = null 
    <text> test1 </text> 
</table> 
<table roworder="2"> 
    <id> 2 </id> 
    <name> toto </name> 
    <text> test2 </text> 
</table>  
<table roworder="3"> 
    <id> 3  </id> 
    <name> tata </name> 
    <text> test3 </text> 
</table> 

這是給我的問題,當我在Reporting Services掛鉤這個XML起來。如果第一行的元素爲空,則不會將其識別爲報告字段,並且結果中沒有整列。

有沒有辦法強制XML序列化,如果其相關聯的值爲空,將放入空元素?

EX:

<table roworder="1"> 
    <id> 1  </id> 
    <name>  </name>    <---- empty element for null value 
    <text> test1 </text> 
</table> 

感謝

回答

3

你可以改變SQL,而不是返回空的空字符串。

select COALESCE(Name, '') from table_name;

[編輯]如果這是不是一種選擇,有可能是另一種(相當醜陋的)的方式。

  1. 使用從原始數據集提取的模式創建另一個空白數據集。
  2. 在此數據集中遍歷可空列,並設置DefaultValue
  3. 將從第一個數據集生成的XML加載到此數據集中(只是數據,而不是再次)。
  4. 從第二個數據集生成XML。

唉!

[編輯2]或者你可以迭代數據集並自己創建XML。

+0

Chetan:這不是一個選項,因爲我們返回的數據集來自一些奇怪的OLEDB連接,並且我們對它對數據庫的查詢沒有實際影響。 – scoob 2009-01-29 20:52:28