4

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 が独自に処理するため、自分でシリアル化を行う必要はありませんでした。

4

1 に答える 1