XSIを生成する方法:属性を持つゼロ要素を?
-
26-09-2019 - |
質問
私は、このXMLフラグメントを含む要求を生成する必要があるWCFクライアントを持っています:
<reason xsi:nil="true" nullFlavor="NA" typeCode="RSON" />
スキーマは、サーバによって決定され、私のコントロール下ではありません。生成されたプロキシコードは、(とりわけ)プロパティnullFlavor
とtypeCode
を含む理由要素のクラスを有します。プロキシは、XmlSerializerをを使用します。
どのように私は、そのようなフラグメントを生成することができますか? XmlSerializerを対応するメンバーがnullの場合にのみxsi:nil
属性を発します。そして、それのnullであれば、それは非常によく、属性として放出される性質を持つことはできません!
ところで、フラグメントがnil要素が子要素や内部テキストを含めることはできませんが、 に属性が含まれていてもよいと言うXMLスキーマインスタンスの仕様に応じて法的です。
解決
これはのXmlSerializerの既知の制限です。あなたはIXmlSerializableインターフェイスのいくつかの巧妙な使用して、手動でXMLを放出することを回避することができるかもしれ - 残念ながら私の知っていることをきれいに解決策はありません。
。他のヒント
ここで私はまだこの問題に苦しんでそれらのために使用されたソリューションです。それはハックのビットですが、それは動作します。 nillableなオフにして、以下のように追加して、属性
[XmlAttributeAttribute( AttributeName = "nil", Namespace = "http://www.w3.org/2001/XMLSchema-instance" )]
public bool NillAtt
{
get
{
return this.nillAtt;
}
set
{
nillAtt = value;
}
}
所属していません StackOverflow