问题:删除使用的DataContractSerializer都没有命名空间的属性或XmlSerializer的
我创建了一个的WebAPI和需要支持XML。
默认的DataContractSerializer产生类似的命名空间:
xmlns:d2p1="http://schemas.datacontract.org/2004/07/Vendor.App.Model.DeeperModel"
xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
我不想在我的XML这些命名空间。与他们合作非常困难。
对我来说,我需要从的FileMaker,它与命名空间其他XLS解析器没有问题,支持XLST。
我已经找到,但不是以后statet原因重复:
我只找到这两个务必:
- 使用
[DataContract(Namespace = "")]
-Attribute - 使用XmlSerializer的
- 通过延长
XmlMediaTypeFormatter
- 通过设置
config.Formatters.XmlFormatter.UseXmlSerializer = true
- 通过延长
DataContract:
DataContract属性不起作用好上课我管不着。我不想做这个丑陋的黑客:
[DataContract(Namespace = "")]
IThisIsNonesense<T> : IEnumerable<T>
{
}
[DataContract(Namespace = "")]
ThisIsNonesense<T> : List<T>, IThisIsNonesense<T>
{
public ThisIsNonesense() : base() {}
}
的XmlSerializer:
XmlSerializer的不是很灵活。例如它不支持Interface。我做例如大量使用IEnumerable<T>
。
我的问题:
怎么可能删除所有默认命名空间,而不需要通过整个代码库进行更改?如果不可能,你会建议什么?
我通常只解析自己使用的XDocument的文件。 – jdweng
虽然这会起作用,但这对我来说会是一个很大的开销。我不想放弃序列化的好处。另外,我的api方法应该可以通过JSON和将来显示的任何其他格式提供。 @jdweng –