使用可选标记反序列化XML

本文关键字:反序列化 XML | 更新日期: 2023-09-27 18:21:58

我有一个带有可选标记的XML,如下所示:

<Config>
    <CheckForCompleteTransform>true</CheckForCompleteTransform>
    <!-- more tags -->
</Config>

以及类定义:

public class config {
    [System.Xml.Serialization.XmlElement("CheckForCompleteTransform")]
    public bool? CheckForCompleteTransform { get; set; }
}

如果我将标记设置为我在上面的示例XML中提供的内容,或者完全省略它,这将起作用。但是如果我将标签提供为<MyTag/>呢?如果使用这种表示法,我希望序列化程序将类中相应的属性设置为true,但我会得到一个

System.FormatException:字符串文字"对于类型无效布尔

关于如何实现这一点,有什么想法吗?

使用可选标记反序列化XML

在此处检查

u可以在类中使用[XmlElement("CheckForCompleteTransform",IsNullable=true)]CheckForCompleteTransform属性

public class config
    {
        [XmlElement("CheckForCompleteTransform", IsNullable = true)]
        public bool? CheckForCompleteTransform { get; set; }
    }

并将xsi:nil="true"属性添加到CheckForCompleteTransform标记中,如以下

<CheckForCompleteTransform xsi:nil="true" />

我自己还没有验证过,但你试过添加吗

[XmlElement(IsNullable = true)]

属性到CheckForCompleteTransform?

编辑:

好的,和一起怎么样

DefaultValueAttribute(true);
相关文章: