XmlSerializer で WCF Restful サービスを使用すると、以下の応答が得られます。
<?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」は、コードで使用した派生型の 1 つです。私は本当にこれを応答に表示したくありません。
サービス契約で[XmlSerializerFormat]を指定してXmlSerialzerを利用しています。WCF は応答を適切にシリアル化できますが、唯一の問題は余分な xmlns タグにあります。はい、私はそれらがそこで役立つものであることを知っています。ただし、クライアントはプレーン xml のみに関心があります。
stackoverflow のさまざまな投稿を見て、XmlTextWriter のいくつかのメソッドをオーバーライドすることでこれを実行できることがわかりました。しかし、私が抱えている問題は、シリアル化中に汎用 XmlTextWriter の代わりに (XmlTextWriter から継承された) customXmlWriter を使用することを WCF に知らせる方法です。
この時点で制御できない XmlSerializer に customXmlTextWriter を渡す方法。
データ クラスを作成し、サービス コントラクト メソッドを自分で定義しましたが、WCF が独自に処理するため、自分でシリアル化を行う必要はありませんでした。