.NET 3.5
所以我在一些挫折之后才来问这个。我遇到的主要问题是,正在序列化的类中的某些属性包括 XML 中的 xmlns 属性。
特定属性位于对象的基类或对象内部的对象上。我可以完全控制这些,并将 datacontract(NameSpace="") 属性添加到我的所有数据合同中。
我不担心顶级 xmlns 或 xmlns:i,而只担心类中较低级别的。
[DataContract(Namespace = "")]
BaseClass
{
[DataMember]
public string Name{get;set;}
}
[DataContract(Namespace = "")]
OtherClass
{
[DataMember]
public decimal Income{get;set;}
}
[DataContract(Namespace = "")]
DerivedClass
{
[DataMember]
public int Age{get;set;}
[DataMember]
public OtherClass Foo{get;set;}
}
在 Derived 类的序列化中,这就是我在 XML 中得到的。
<DerivedClass
xmlns="http://IDontCareAboutThisOne"
xmlns:i="http://IDontCareAboutThisOneEither">
<Name xmlns="">iMortalitySX</Name>
<Age>30</Age>
<Foo>
<Income xmlns="">0.0</Income>
</Foo>
</DerivedClass>
这当然只是一个例子。此外,如果您好奇,我已经通过 WCF 服务完成了这项工作,并直接使用 DataContractSerializer 获得了相同的结果(应该如此)。我需要这个,因为旧网络上返回的数据量很大。我刮胡子的每一点都会有很大的不同。
是的,我考虑过 JSON,但客户需求推动了 XML。还有其他我不同意的原因,但它需要在 XML 中。此外,仅供参考,第三方序列化程序不是这个选项。我被 MS 基础的东西困住了。我将其公开为带有 WebBehavior 的 WebHttpBinding,作为 REST 类型的服务。我没有使用 REST 入门工具包,也不会。