【发布时间】:2010-03-08 22:26:47
【问题描述】:
我有一个简单的 DataContract 类,其中包含另一个 DataContract 类的数组。当它被序列化时,生成的 XML 包含数组,但每个标签首先以“a:”开头(例如:<a:name>test</a:name>)。有没有办法告诉序列化程序省略这些?
谢谢!
【问题讨论】:
标签: c# wcf serialization
我有一个简单的 DataContract 类,其中包含另一个 DataContract 类的数组。当它被序列化时,生成的 XML 包含数组,但每个标签首先以“a:”开头(例如:<a:name>test</a:name>)。有没有办法告诉序列化程序省略这些?
谢谢!
【问题讨论】:
标签: c# wcf serialization
a: 定义了一个 XML 命名空间。您可能可以将两个 Datacontracts 放在同一个 XML 命名空间中,并且 a: 会消失。虽然这仍然是有效的 XML。
【讨论】:
为数据合约指定一个空的命名空间 - 像这样:
[DataContract(Namespace="")]
public class YourClass
{
....
}
[DataContract(Namespace="")]
public class YourArrayClass
{
....
}
这应该会解决它。
但是为什么这会困扰你呢? XML 命名空间是 XML 不可或缺的重要组成部分,尤其是在消除来自各种来源的 XML 元素的歧义时……查看W3Schools 了解 XML 命名空间为何如此重要以及如何消除对它们的恐惧的介绍 - 强烈推荐!
【讨论】: