将 WCF Restful 服务与 XmlSerializer 一起使用,我得到以下响应。
<?xml version="1.0" encoding="utf-8"?>
<availabilityResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xyz.com/ABCService">
<availabilityResult>
<title xsi:type="Availability_1">
<titleId>0010327457</titleId>
<availability>
<purchasable>false</purchasable>
<availableCopies>0</availableCopies>
<totalCopies>0</totalCopies>
</availability>
</title>
</availabilityResult>
</availabilityResponse>
(我希望删除 xmlns:xsd、xmlns:xsi 和 xsi:type 标签)
“Availability_1”是我在代码中使用的一种派生类型。我真的不想在回复中显示这一点。
我通过在服务合同中指定 [XmlSerializerFormat] 来使用 XmlSerialzer。WCF 能够正确序列化我的响应,但我唯一的问题是额外的 xmlns 标记。是的,我知道它们在那里很有用。但是,客户端只对纯 xml 感兴趣。
通过查看 stackoverflow 中的各种帖子,我了解到我可以通过覆盖 XmlTextWriter 的一些方法来做到这一点。但我遇到的问题是如何让 WCF 知道在序列化时使用我的 customXmlWriter(继承自 XmlTextWriter)而不是通用 XmlTextWriter。
如何将我的 customXmlTextWriter 传递给我目前没有任何控制权的 XmlSerializer。
我刚刚创建了我的数据类并从我的角度定义了服务合同方法,但我不必从我这边做任何序列化的事情,因为 WCF 会自行处理它。