代码之家  ›  专栏  ›  技术社区  ›  scoob

序列化数据集时强制显示XML标记

  •  1
  • scoob  · 技术社区  · 16 年前

    我正在构建一个webservice,它有一个返回Dataset对象的webmethod。

    我遇到了一个问题,当XML标记的关联值为null时,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>
    

    如果XML序列化的关联值为null,是否有办法强制XML序列化放入空元素?

    前任:

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

    谢谢

    1 回复  |  直到 16 年前
        1
  •  3
  •   Chetan Sastry    16 年前

    您可以将SQL更改为返回空字符串而不是null。

    select COALESCE(Name, '') from table_name;

    [编辑] 如果这不是一种选择,可能还有另一种(相当丑陋的)方式。

    1. 使用从原始数据集提取的架构创建另一个空白数据集。
    2. 迭代此数据集中的可空列并设置 DefaultValue
    3. 将从第一个数据集中生成的XML加载到此数据集中(仅加载数据,不再加载模式)。
    4. 从第二个数据集生成XML。

    啊!