まず、WebAPI が XmlSerializer を使用して WebAPI 応答をフォーマットしていることを確認するか、少なくともこのリソース/API だけに XmlSerializer を使用する必要があります。
このWebApiConfig.cs
ファイルには、ルート登録の内容とコメントアウトされたコードが含まれています。
そのチャンクの下に追加し、次を追加します。
var xmlSerializer = new XmlSerializer(typeof(FruitXmlModel));
config.Formatters.XmlFormatter.SetSerializer<FruitXmlModel>(xmlSerializer);
これにより、 CLR 型XmlSerializer
をシリアル化するときに使用されるold が指定されます。FruitXmlModel
おそらく、XML シリアル化アセンブリを参照する必要があることに注意してください。
次に、新しい名前空間を開始する XML 内の要素を表すモデル内のクラスに、このコードを追加する必要があります。
...
[XmlNamespaceDeclarations]
public XmlSerializerNamespaces Namespaces = new XmlSerializerNamespaces();
public FruitXmlModel() // ctor for one of my models
{
this.Namespaces.Add("banana", "http://www.fruitschema.org/banana");
}
...
Paste XML as Classes 機能を使用した場合、このクラスにはXmlTypeAttribute
、正しい名前空間が設定された正しい属性ですでに注釈が付けられているはずです。
すべて問題なく、この単純な変更により、WebAPI と XmlSerializer に、適切にプレフィックスが付けられた XML 出力を生成するために必要なすべてが提供されます。
幸運を祈ります、ルーク、またすぐに会えることを願っています。