在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工具生成的代码,并且每次升级时都很难维护。

是我错过了什么,还是有另一种方法来实现我正在寻找的?

在c#的XmlElement中将true和false转换为1和0

您可以让对象忽略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,可以删除它