我有一个WCF客户端,需要以产生含有此XML片段的请求:

<reason xsi:nil="true" nullFlavor="NA" typeCode="RSON" />

在模式由服务器确定,并且没有我的控制之下。生成的代理代码具有用于容纳原因元件一类(除其他外)性质nullFlavortypeCode。代理使用XmlSerializer。

我怎样才能产生这样的片段? XmlSerializer的发射仅当相应的构件是空的xsi:nil属性。如果它是零,也不能很好得将被发射为属性的属性!

顺便说一句,该片段法律根据XML模式实例规范,它说一个零元素不能包含任何子元素或内部文本,但是的可以包含属性。

有帮助吗?

解决方案

这是XmlSerializer的的一个已知的限制。您可以绕过它与一些巧妙的运用IXmlSerializable接口和手动发射XML的 - 很不幸,没有一个干净的解决方案,我知道

其他提示

下面是用于那些这一问题仍然在努力的溶液I。这是一个黑客位,但它的工作原理。关闭的nillable和添加和属性如下

[XmlAttributeAttribute( AttributeName = "nil", Namespace = "http://www.w3.org/2001/XMLSchema-instance" )]
public bool NillAtt
{
    get
    {
        return this.nillAtt;
    }
    set
    {
        nillAtt = value;
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top