【问题标题】:WCF and XmlSerialization and XmlWriterSettingsWCF 和 XmlSerialization 和 XmlWriterSettings
【发布时间】:2011-11-28 18:51:54
【问题描述】:

我有一个 RESTful WCF Web 服务(使用经过大幅修改的 WCF Rest Starter Kit),并且数据协定是简单的 POCO,标有 [Serializable] 和 [XmlType](在适当的情况下,成员标有 [XmlElement] 或 [XmlAttribute] )。

在 WCF 内部的某个地方创建了一个 XmlSerializer 实例,它生成的输出在 XML 节点之间没有缩进或间距,这对于自动化流程来说很好,但由于我必须自己手动格式化 XML 输出,因此调试变得更加困难。

我想使用 XmlWriterSettings,这样它会在 XML 被发送到管道之前自动格式化它,但是我看不到我可以在哪里注入它。

我使用 Reflector 来查找 XmlSerializer 在 WCF 中的实例化位置,它显示在几个嵌套的内部类 iside XmlSerializerOperationBehavior 中,但除此之外我被卡住了。

塔!

【问题讨论】:

  • 你用什么来查看 XML?为什么不在 XML 编辑器(如 Visual Studio)中查看它?或者在调试器中使用 XML 可视化器查看它。

标签: wcf xml-serialization


【解决方案1】:

XmlWriterSettings 对象不会传递给构造函数到 XmlSerializer,而是传递给 XmlWriter,然后在需要写出对象时传递给序列化程序。您可以更改的地方是自定义消息编码器(负责在消息中的 XML 信息集和线路中的实际字节之间进行转换)。创建XmlWriter 实例的自定义编码器的一个很好的示例是“Custom Text Encoder”。

【讨论】:

    【解决方案2】:

    我认为您可以控制 WCF 用于创建消息转录的完整 XMLSerializer 输出。提示和示例在http://msdn.microsoft.com/en-us/magazine/cc163569.aspx 中给出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      相关资源
      最近更新 更多