【问题标题】:Web Service Generated Code: Control serialized XML without unnecessary spaces and line breaks?Web 服务生成的代码:控制序列化的 XML 没有不必要的空格和换行符?
【发布时间】:2013-06-21 21:42:03
【问题描述】:

我们有一个 Web 服务,它使用从 WSDL 生成的消息和操作合同的代码生成文件。请求从序列化的 XML 中删除所有格式(空格、缩进)。我知道以下设置:

settings.NewLineHandling = NewLineHandling.None;
settings.Indent = false;

我可以在 Web.Config 中使用 <System.Xml.Serialization> 配置元素应用这些吗?所有的序列化都发生在幕后,所以我想知道我是否可以从配置文件中控制格式,因为我们不直接调用序列化方法。

或者我是否必须在应用了这些设置的情况下实现自定义 xml 序列化程序?

【问题讨论】:

  • 我很好奇,为什么这是一个要求?您是说要从通过网络传递的 XML 中删除缩进和空格吗?如果您启用了 HTTP 压缩,则删除空格和缩进不会真正为您带来任何好处,只会增加代码的复杂性。
  • @rsbarro - 谢谢,前几天它出现在我的办公桌上。老实说,如果他们担心空间问题,我会改用 JSON。感谢您提供有关 HTTP 压缩的 cmets。我找不到一个简单的方法来做到这一点。

标签: c# web-services web-config xmlserializer


【解决方案1】:

这是我给出的答案:

发出的 XML 看起来和代码一样好。因为消息的类文件是自动生成的,所以会自动处理序列化。您可以重新编写代码以手动完成此部分,但这会给代码增加不必要的复杂性。

一些选项:

手动序列化。

当您直接调用序列化时,可以选择关闭某些格式。我不推荐这种方法,因为其他开发人员会想知道为什么要这样做。

开启 HTTP 压缩。

http://en.wikipedia.org/wiki/HTTP_compression

压缩消息时,空格无关紧要。无论如何我都会推荐这个,因为你的消息是 40-70 兆(相当大)。

使用 JSON

与相同的 XML 消息相比,JSON 的有效负载要小得多。由于您的消息有很多标签,因此即使在压缩之前,大小的下降也应该很明显。

【讨论】:

  • 如果有人找到简单的方法,请发布您的答案,我会更新并可能接受。
猜你喜欢
  • 1970-01-01
  • 2016-01-05
  • 2011-06-11
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-06
  • 1970-01-01
相关资源
最近更新 更多