我正在开发一个返回对象数据的WCF方法,包括Dictionary属性。 XML包含大量标记,我想知道是否有减少标记的方法。
下面是Dictionary的当前XML输出示例:
<gases>
<a:KeyValueOfstringfloat>
<a:Key>CH4</a:Key>
<a:Value>40</a:Value>
</a:KeyValueOfstringfloat>
<a:KeyValueOfstringfloat>
<a:Key>CO2</a:Key>
<a:Value>60</a:Value>
</a:KeyValueOfstringfloat>
</gases>
对于添加到集合中的每个额外气体元素,添加额外的<a:KeyValueOfstringfloat>
及其内容。是否可以将格式自定义为以下内容:
<gases>
<key>value</key>
</gases>
提前致谢。
答案 0 :(得分:0)
有两个选项,但两者都涉及不为您的集合使用.NET Dictionary类型。给定您想要的输出look at the accepted answer to this question.
否则,如果您需要简单的XML,则需要使用简单的类结构。定义包含名为key的属性的气体类,该属性是字符串数组。我很确定生成的soap XML可能看起来像你显示的那样。
在这两种情况下,这可能不是你真正想要的。我猜测XML中的关键元素需要针对每个键/值对进行不同,但您应该能够设计类来处理这个问题(例如,创建一个具有名称和值字符串属性的项类)。如果你想使用气体类作为字典,你就可以编写代码来完成它。
更新:以下是CollectionDataContract属性可配置的示例:
[CollectionDataContract(
Name = "Cities",
ItemName = "city",
KeyName = "cityName",
ValueName = "population")]
public class CityList
: IDictionary<string, int>,
IEnumerable<System.Collections.Generic.KeyValuePair<string, int>>
{
/// snipped
}
答案 1 :(得分:0)
也许并不完全是你想要的东西,但通过电线GZip-ing消息将有很大帮助