我正在尝试将“集合集合”转换为更好看的xml。基本上,我想欺骗服务消费者,让它看起来像是一个真实的对象。
这是WCF自动创建的
<EntityPropertyCollection xmlns="http://schemas.datacontract.org/2004/07/CustomSerializer" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<EntityProperty>
<Name>Test</Name>
<Value i:nil="true"/>
</EntityProperty>
<EntityProperty>
<Name>Test2</Name>
<Value i:type="EntityPropertyCollection">
<EntityProperty>
<Name>Nested1</Name>
<Value i:nil="true"/>
</EntityProperty>
<EntityProperty>
<Name>Nested2</Name>
<Value i:nil="true"/>
</EntityProperty>
</Value>
</EntityProperty>
</EntityPropertyCollection>
这是我想要实现的目标
<Something>
<Test i:nil="true"/>
<Test2 i:type="Something">
<Nested1 i:nil="true"/>
<Nested2 i:nil="true"/>
</Test2>
</Something>
特定类型的自定义序列化程序(EntityProperyCollection)会很好,但其他帖子表明这不是一个选项。
我查看了Data Contract Surrogates。我想我可以生成一个自定义类型,并允许DataContractSerializer序列化生成的类型。但是,我希望有一个更简单的解决方案。
答案 0 :(得分:0)
您可以在返回对象上实现IXmlSerializable并手动执行序列化,或者只返回流并使用XmlWriter创建您想要的XML。