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

时间:2016-08-29 09:06:10

标签: c# asp.net xml xsd xmlserializer

我正在使用来自第三方的SOAP Web服务。我使用XSD.exe工具生成了对象。问题是我需要发送XmlElement我串行化。他们的服务引发了错误,因为它希望所有boolean值都用1和0表示,而不是真和假。

我知道我可以使用这样的自定义序列化工具:IXmlSerializable Interface或者:Making the XmlSerializer output alternate values for simple types但是它们涉及我更改Xsd.exe工具生成的代码并且很难维护每次都有升级。

我是否遗漏了某些东西,或者是否有另一种方式来实现我所寻找的目标?

1 个答案:

答案 0 :(得分: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解析器忽略real属性,而是使用格式化的函数。

如果您不需要解析它,可以删除setter。