在c#的XmlElement中将true和false转换为1和0
本文关键字:false 转换 true XmlElement 中将 | 更新日期: 2023-09-27 18:04:42
我正在使用来自第三方的SOAP web服务。我已经使用XSD.exe
工具生成了对象。问题是我需要发送一个我正在序列化的XmlElement
。他们的服务抛出了一个错误,因为它期望所有的boolean
值都由1和0表示,而不是true和false。
我知道我可以使用自定义序列化器,例如:IXmlSerializable接口或:使XmlSerializer为简单类型输出替代值,但它们涉及到我更改由Xsd.exe
工具生成的代码,并且每次升级时都很难维护。
是我错过了什么,还是有另一种方法来实现我正在寻找的?
您可以让对象忽略bool值,而是使用不同的变量来显示它。为例:
[IgnoreDataMember, XmlIgnore]
public bool BoolProp { get; set; }
/// <summary>
/// XML serialized BoolProp
/// </summary>
[DataMember(Name = "BoolProp"]
[XmlElement(ElementName = "BoolProp"]
public int FormattedBoolProp
{
get {
return BoolProp ? 1 : 0;
}
set { BoolProp = value==1 }
}
这将使XML解析器忽略实际属性,而是使用格式化的函数。
如果不需要解析setter,可以删除它