我正在开发一个WCF方法,它返回对象数据,包括Dictionary属性。XML包含大量的标记,我想知道是否有减少标记的方法。
以下是字典的当前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>对于添加到集合中的每个额外的gas元素,都会添加一个额外的<a:KeyValueOfstringfloat>及其内容。是否可以将格式自定义为类似以下内容:
<gases>
<key>value</key>
</gases>提前谢谢。
发布于 2011-04-19 20:51:34
有几种选择,但这两种选择都涉及到不对集合使用.NET字典类型。给定所需的输出,look at the accepted answer to this question.
否则,如果您想要简单的XML,就需要使用简单的类结构。定义一个气体类,其中包含一个名为key的属性,该属性是一个字符串数组。我非常确定生成的soap XML可能与您所显示的内容类似。
在这两种情况下,这可能不是您真正想要的。我猜对于每个键/值对,XML中的键元素需要不同,但是您应该能够设计类来处理这个问题(例如,创建一个具有名称和值字符串属性的item类)。如果你想把gases类作为字典来使用,你需要编写代码来完成它。
更新:下面是CollectionDataContract属性的可配置性示例:
[CollectionDataContract(
Name = "Cities",
ItemName = "city",
KeyName = "cityName",
ValueName = "population")]
public class CityList
: IDictionary<string, int>,
IEnumerable<System.Collections.Generic.KeyValuePair<string, int>>
{
/// snipped
}发布于 2011-04-19 21:22:51
也许这并不是你想要的,但是通过GZip传输消息会有很大帮助
https://stackoverflow.com/questions/5715463
复制相似问题