如何生成XSI:带有属性的nil元素?
-
26-09-2019 - |
题
我有一个WCF客户端,需要以产生含有此XML片段的请求:
<reason xsi:nil="true" nullFlavor="NA" typeCode="RSON" />
在模式由服务器确定,并且没有我的控制之下。生成的代理代码具有用于容纳原因元件一类(除其他外)性质nullFlavor
和typeCode
。代理使用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;
}
}
不隶属于 StackOverflow