首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >减少wcf字典类型的xml标记

减少wcf字典类型的xml标记
EN

Stack Overflow用户
提问于 2011-04-19 19:13:20
回答 2查看 343关注 0票数 2

我正在开发一个WCF方法,它返回对象数据,包括Dictionary属性。XML包含大量的标记,我想知道是否有减少标记的方法。

以下是字典的当前XML输出的示例:

代码语言:javascript
复制
<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>及其内容。是否可以将格式自定义为类似以下内容:

代码语言:javascript
复制
<gases>
 <key>value</key>
</gases>

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-19 20:51:34

有几种选择,但这两种选择都涉及到不对集合使用.NET字典类型。给定所需的输出,look at the accepted answer to this question.

否则,如果您想要简单的XML,就需要使用简单的类结构。定义一个气体类,其中包含一个名为key的属性,该属性是一个字符串数组。我非常确定生成的soap XML可能与您所显示的内容类似。

在这两种情况下,这可能不是您真正想要的。我猜对于每个键/值对,XML中的键元素需要不同,但是您应该能够设计类来处理这个问题(例如,创建一个具有名称和值字符串属性的item类)。如果你想把gases类作为字典来使用,你需要编写代码来完成它。

更新:下面是CollectionDataContract属性的可配置性示例:

代码语言:javascript
复制
[CollectionDataContract(
    Name = "Cities",
    ItemName = "city",
    KeyName = "cityName",
    ValueName = "population")]
public class CityList
    : IDictionary<string, int>,
      IEnumerable<System.Collections.Generic.KeyValuePair<string, int>>
{
/// snipped
}
票数 0
EN

Stack Overflow用户

发布于 2011-04-19 21:22:51

也许这并不是你想要的,但是通过GZip传输消息会有很大帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5715463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档