【问题标题】:WCF DataContract serialization with Collections带有集合的 WCF DataContract 序列化
【发布时间】:2010-03-08 22:26:47
【问题描述】:

我有一个简单的 DataContract 类,其中包含另一个 DataContract 类的数组。当它被序列化时,生成的 XML 包含数组,但每个标签首先以“a:”开头(例如:<a:name>test</a:name>)。有没有办法告诉序列化程序省略这些?

谢谢!

【问题讨论】:

    标签: c# wcf serialization


    【解决方案1】:

    a: 定义了一个 XML 命名空间。您可能可以将两个 Datacontracts 放在同一个 XML 命名空间中,并且 a: 会消失。虽然这仍然是有效的 XML。

    【讨论】:

      【解决方案2】:

      为数据合约指定一个空的命名空间 - 像这样:

      [DataContract(Namespace="")]
      public class YourClass
      {  
        ....
      }
      
      [DataContract(Namespace="")]
      public class YourArrayClass
      {  
        ....
      }
      

      这应该会解决它。

      但是为什么这会困扰你呢? XML 命名空间是 XML 不可或缺的重要组成部分,尤其是在消除来自各种来源的 XML 元素的歧义时……查看W3Schools 了解 XML 命名空间为何如此重要以及如何消除对它们的恐惧的介绍 - 强烈推荐!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-09
        • 2016-06-10
        • 2010-09-08
        • 1970-01-01
        相关资源
        最近更新 更多